1

因此,我正在阅读有关delta encoding的内容,并且正在四处寻找一些很好的例子。我认为谷歌浏览器使用类似的东西来更新补丁,rsync可能,维基百科的文章暗示很多在线备份工具都使用它。

我很好奇是否有任何好的 Java 库可以做这种工作?似乎有大量的 *nix 和基于 C 的工具,但很少或没有 Java 等价物除了压缩数据结构之外做得更多。

无论如何,这对我来说是一个全新的概念,所以我很想了解有关它的任何内容,特别有兴趣看到有人使用 Java 来做这件事。

4

2 回答 2

2

我知道这是一个非常古老的问题,但我决定在这里发布这个问题,以防其他人偶然发现同样的问题。

这是我目前正在使用的。这真的很简单,而且效果很好。

https://code.google.com/p/xdeltaencoder/

不过,您需要确保对源进行校验和(在我的情况下为 fileAJson),因为它不会自动为您执行此操作!

无论如何,下面的代码:

//Create delta
String[] deltaArgs = new String[]{fileAJson.getAbsolutePath(), fileBJson.getAbsolutePath(), fileDelta.getAbsolutePath()};
XDeltaEncoder.main(deltaArgs);

//Apply delta
deltaArgs = new String[]{"-d", fileAJson.getAbsolutePath(), fileDelta.getAbsolutePath(), fileBTarget.getAbsolutePath()};
XDeltaEncoder.main(deltaArgs);

//Trivia, Surpisingly this also works
deltaArgs = new String[]{"-d", fileBJson.getAbsolutePath(), fileDelta.getAbsolutePath(), fileBTarget.getAbsolutePath()};
XDeltaEncoder.main(deltaArgs);

仅通过文件之间的差异更新数据(Java 的增量)

于 2014-06-23T06:06:29.027 回答
1

Wikipedia列出了 VCDIFF delta 格式的几个 Java 实现

rsync算法还存在 Java 实现,可用于创建二进制差异。它们似乎还没有准备好生产,但是如果您只想查看代码,它们就可以了。请参阅适用于 Java 的任何好的 rsync 库?.

于 2012-07-06T01:54:17.130 回答