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