查找两个大文件的差异

Find difference of two large files

我想计算文件差异。并且文件可能非常大,例如25MB。

我的想法是按部分计算文件,例如首先比较前 1000 个字节,然后比较第二个 1000 个字节,依此类推。

Java-Diff-Utils(或其他)是否支持按部分计算差异,这意味着它需要存储状态而不是将第二个 1000 字节视为新文件?

如何让它也存储行号? 谢谢!

编辑: 文件为txt文件格式。

您需要提供更多信息。比如你要比较什么样的文件,有没有时间限制,你在使用Java-Diff-Utils时是否遇到了问题。如果没有,以下只是一个想法:

如果你看专业的 diff 工具,我通常使用 winmerge (https://winmerge.org),它们有不同的方法来处理不同的 类型 文件。因此,具有不同标签顺序的 XML 或 CSV 或 json 仍然是具有相同 信息 的文件。如果您想与非结构化文件(例如 .txt)进行比较,那么 java-diff-utils 是否将块视为同一文件并不重要。否则,您将不得不担心。

根据他们的帮助页面和示例 (https://github.com/java-diff-utils/java-diff-utils/wiki/Examples),两个块似乎本质上是两个文件。但即使是这样,您也应该能够覆盖该行为(因为它是开源的)。