在文件中间插入或更新字节的最佳方法

时间:2012-10-07 13:02:39

标签: file node.js notepad++

这个问题已多次得到解答。

人们说,唯一的方法是将旧文件的字节复制到新文件,然后插入新字节并完成从旧文件复制剩余字节。然后删除旧文件并重命名新文件。

但我的问题更多地与应用最佳文本/二进制编辑器的技术有关。如果我打开一个非常大的二进制文件(480MB)并在开头用HxD和notepad ++添加4个字节,似乎程序正在复制整个文件,因为我可以看到硬盘上的100%活动和正在写入的数据速度(3-4秒写入~100MB / s)。我想我唯一的办法就是将数据复制到临时文件中吗?

1 个答案:

答案 0 :(得分:3)

在/到最后的某个地方向/从文件添加/删除字节的唯一方法是在这些字节之后重写任何内容。您可以就地执行此操作,但使用临时文件通常更容易,更安全,因为在写入新文件之前不会触及原始文件。

要在原地插入N个字节,您需要从要插入的位置读取至少N个字节。然后你写新的字节,覆盖N个字节。但你只是阅读它们,所以你现在可以把它们写回来。但是,这将再次覆盖N个字节,因此您需要先读取它们。正如您所看到的,它涉及大量的搜索 - 将所有剩余数据存储在内存中对于不太大的文件来说会更容易和更快。对于大文件,通常使用临时文件来避免这种麻烦。