因此,我正在閱讀delta encoding,我正在四處尋找一些很好的例子。我認爲谷歌瀏覽器使用類似的補丁更新,rsync可能和維基百科文章暗示,大量的在線備份工具使用它。什麼Delta編碼/壓縮算法庫有Java?
我很好奇,如果有任何好的Java庫在那裏做這種工作?似乎有大量的* nix和基於C的工具,但很少或沒有Java等價物比壓縮數據結構做得更多。
無論如何,這對我來說是一個全新的概念,所以我很想知道關於它的所有內容,特別感興趣的是看到有人使用Java來做這件事。
因此,我正在閱讀delta encoding,我正在四處尋找一些很好的例子。我認爲谷歌瀏覽器使用類似的補丁更新,rsync可能和維基百科文章暗示,大量的在線備份工具使用它。什麼Delta編碼/壓縮算法庫有Java?
我很好奇,如果有任何好的Java庫在那裏做這種工作?似乎有大量的* nix和基於C的工具,但很少或沒有Java等價物比壓縮數據結構做得更多。
無論如何,這對我來說是一個全新的概念,所以我很想知道關於它的所有內容,特別感興趣的是看到有人使用Java來做這件事。
維基百科lists several Java implementations for the VCDIFF delta format。
還有一些rsync
算法的Java實現,它可以用來創建二進制比較。他們似乎並沒有準備好生產,但如果你只是想看看他們的代碼,他們很好。請參閱Any good rsync library for Java?。
我知道這是一個非常古老的問題,但是我決定在這裏發佈這個,只是讓其他人絆倒在同一個問題上。
這就是我目前使用的。這非常簡單,效果很好。
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)
http://da.vidr.cc/projects/lljvm/☺ – 2012-07-06 01:40:30