是否有 VCDIFF 二进制差异格式(解码器和编码器)的开源 Java 实现?
有xdelta和open-vcdiff,但它们都是 C 库。
或者,是否有其他格式/算法可用于从 Java 生成二进制文件的差异?
是否有 VCDIFF 二进制差异格式(解码器和编码器)的开源 Java 实现?
有xdelta和open-vcdiff,但它们都是 C 库。
或者,是否有其他格式/算法可用于从 Java 生成二进制文件的差异?
您可以使用badiff 生成二进制差异;该网站是
它在 Maven 中心上可用。它是 BSD 许可的,对 OSS 和商业都非常友好。使用的算法是本文描述的 O(ND) diff 的分块版本:
http://www.xmailserver.org/diff2.pdf
diff 格式与其他任何东西都不是特别兼容,但它会产生一些非常好的和非常小的差异。
图书馆很快;在我的台式机上,它可以在 54 秒内生成两个随机 50MB 输入流的差异。希望这足够快;我认为这是相当令人印象深刻的,因为这是对两个 5000 万个令牌流的比较。在计算差异时,badiff 将利用多个 CPU 内核。
免责声明:我是badiff的作者,所以我当然认为它很酷。我总是乐于接受建议;诸如能够读/写“标准”二进制差异格式之类的东西听起来像是在即将发布的版本中添加的很酷的新功能。
我已经将 MiscUtil 的 vcdiff 解码器移植到 java。 https://github.com/xiaxiaocao/jvcdiff 更新:现在它也有一个 vcdiff 编码器
我有一个用 C# 编写的 VCDIFF解码器,如果有帮助的话,它可能很容易移植到 Java。它是MiscUtil的一部分,但我认为它不依赖于 MiscUtil 的任何其他位(或者至少至少)。
不幸的是,我从来没有开始编写编码器,这显然更难——而且在我们的案例中不是必需的(我们需要在移动设备上应用 .NET 中的补丁,但可以在服务器上按我们想要的方式创建它们) .
我在 Github 上有一个open-vcdiff 的 Java 端口。它已针对 open-vcdiff 进行了测试,但并未在任何地方用于生产。
有一个 xdelta 的 java 端口:http: //sourceforge.net/projects/javaxdelta/
但我不能说它的质量 - 我还没有尝试过。