首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对大文件进行高效的内联搜索和替换

对大文件进行高效的内联搜索和替换
EN

Stack Overflow用户
提问于 2009-04-07 10:31:05
回答 2查看 1.3K关注 0票数 3

有一些标准的工具可以做到这一点,但我需要一个简单的GUI来帮助一些用户(在windows上)。他们将看到一个打开的文件对话框,并选择要处理的文件。

该文件将是一个XML文件。该文件将包含一个文本字符串(在前几行内),该字符串需要删除或替换为空格(与哪一行无关)。

问题是XML文件有几个千兆字节大小,但是固定的搜索和替换字符串将出现在前4k左右。

最好的方法是覆盖搜索字符串并保存在原地,而不需要将全部内容读取到内存中或过度写入磁盘?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-04-07 10:38:30

显然,用空格替换,这样整个文件的大小就不会发生变化,这是最好的选择,否则您必须在整个文件中进行流式处理才能在磁盘上更新。

如果这适用于Unix环境,我会考虑使用mmap()将文件开头的适当部分映射到内存中,然后就地编辑并完成。

This snippet展示了如何使用与Win32等效的CreateFileMapping()函数。

票数 1
EN

Stack Overflow用户

发布于 2009-04-07 10:36:10

您可以很容易地编写自己的工具。如果它是在最开始的时候,那么任何暴力的方法都会起作用。只要继续扫描直到你找到它。

但是,只有在不更改文件大小的情况下,才能避免大量的磁盘写入。如果您希望在中间某处删除或插入字节,则必须覆盖它们后面的所有字节。在你的案例中实际上就是所有的文件。所以你必须用空格来代替它。只要用一个字节替换另一个字节,就不会有任何开销。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/724998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档