【发布时间】:2013-03-21 22:42:50
【问题描述】:
例如,我有一个 40Mb 的文件,我想对其进行一些小的更改,可能是 20Kb 的更改。
我可以在结果文件和原始文件之间创建差异,很简单,可以通过使用进行更改的应用程序手动编写它,或者同时获取原始文件和结果文件并从中生成差异(以 Rabin 的多项式指纹算法为例)...
问题是,为了读取该差异(新文件)的有效结果,我必须将差异修补到原始文件并创建生成的新文件并读取...这将创建 2 个 40mb 文件它们之间只有 20kb 的差异。似乎合乎逻辑的是,可以将初始文件与 diff 结合使用并解析(无论如何读取)生成的最终文件,而无需创建它的全新副本。
我已经查看了 xdiff,它具有创建 diff 给定 2 个文件的功能,或者将 diff 作为补丁应用到文件,但是当提供原始文件和 diff 时,没有获得简单文件句柄的功能文件。
这样的事情存在吗?这对于节省较大文件的存储空间非常有帮助,即使仅用于只读(写入操作可能会写入新的差异)。
任何语言的示例都可以,尽管 c、python 或 php 如果随时可用的话会很棒。
【问题讨论】:
标签: file file-io diff patch file-handling