0

这个问题已经回答过很多次了。

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

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

4

1 回答 1

3

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

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

于 2012-10-07T13:13:29.410 回答