什么Delta编码/压缩算法库适用于Java?

时间:2012-07-06 01:14:15

标签: java algorithm diff delta

所以我正在阅读delta encoding,我正在寻找一些很好的例子。我认为谷歌浏览器会使用类似的内容进行补丁更新,rsync可能,维基百科文章暗示很多在线备份工具都会使用此功能。

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

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

2 个答案:

答案 0 :(得分: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);

Update data only by difference between files (delta for java)

答案 1 :(得分:1)

维基百科lists several Java implementations for the VCDIFF delta format

还存在rsync算法的Java实现,可用于创建二进制差异。他们似乎没有生产准备,但如果你只是想看到代码,他们就没事了。请参阅Any good rsync library for Java?