3

VCDIFF バイナリ差分形式 (デコーダーとエンコーダー) のオープンソース Java 実装はありますか?

xdeltaopen-vcdiffがありますが、どちらも C ライブラリです。

または、Java からバイナリ ファイルの差分を生成するために使用できる他の形式/アルゴリズムはありますか?

4

5 に答える 5

4

バイナリ diff は、badiff を使用して生成できます。ウェブサイトは

http://badiff.org/

Maven Central で利用できます。BSD ライセンスなので、OSS と商用の両方に適しています。使用されるアルゴリズムは、このペーパーで説明されている O(ND) diff のチャンク バージョンです。

http://www.xmailserver.org/diff2.pdf

diff 形式は他の形式と特に互換性があるわけではありませんが、非常に優れた、非常に小さい diff が生成されます。

ライブラリはかなり高速です。私のデスクトップ マシンでは、54 秒で 2 つのランダムな 50MB 入力ストリームの差分を生成できます。うまくいけば、それは十分に速いです。これは、それぞれ 5,000 万トークンの 2 つのトークン ストリームの比較であるため、かなり印象的だと思います。diff を計算するとき、badiff は複数の CPU コアを利用します。

免責事項:私はbadiffの作者なので、もちろんかっこいいと思います。私はいつでも提案を受け付けています。「標準」のバイナリ diff 形式を読み書きできるなどの機能は、今後のリリースで追加されるクールな新機能のように思えます。

于 2013-09-08T20:08:42.787 に答える
3

MiscUtil の vcdiff デコーダーを Java に移植しました。 https://github.com/xiaxiaocao/jvcdiff 更新: vcdiff エンコーダーも追加されました

于 2012-12-16T08:49:59.803 に答える
3

私はC# で書かれた VCDIFF 用のデコーダーを持っています。これはMiscUtilの一部ですが、MiscUtilの他のビットに依存しているとは思いません(とにかく、最小限にすぎません)。

残念ながら、私はエンコーダーの作成に取り掛かることはありませんでした。これは明らかにかなり難しく、私たちの場合は必要ありませんでした (モバイル デバイス上の .NET にパッチを適用する必要がありましたが、サーバーで必要に応じてそれらを作成できました)。 .

于 2009-07-10T07:07:50.733 に答える
1

Githubに open-vcdiffのJava ポートがあります。open-vcdiff に対してテストされていますが、本番環境では使用されていません。

于 2012-05-04T03:50:54.273 に答える
1

xdelta の Java ポートがあります: http://sourceforge.net/projects/javaxdelta/

しかし、その品質については何も言えません。まだ試していません。

于 2009-07-16T14:18:17.620 に答える