2

ネットワーク経由でファイルの同期を維持しようとしています。変更ごとにファイル全体を転送する代わりに、変更された部分を見つけて圧縮し、それらだけを転送したいと思います。たとえば、subversion と非常によく似ています。この問題に対する信頼できる C# ソリューションはありますか、それとも自分で作成する必要がありますか?

4

3 に答える 3

2

キーワードは「差分アルゴリズム」です。C# にはいくつかの実装があります。

Diff.NET、C# の一般的で再利用可能な Diff アルゴリズムは、妥当な選択のように見えます。Google はさらに数百の選択肢を見つけてくれます。

ほとんどの diff アルゴリズムは、行ベースのテキスト ファイルを処理するために特別に作成されていることに注意してください。
バイナリ データまたは行の一部を比較したい場合は、比較ライブラリを選択する際により注意する必要があります。

差分も圧縮したい場合は、System.IO.Compression.GZipStreamクラスを使用できます。

于 2011-03-10T12:59:11.747 に答える
1

この投稿はあなたを助けるかもしれません。

一般に、新しいファイルを古いファイルとバイナリ比較し、変更されたバイトだけを取り除き、圧縮し、他のシステムに転送し、解凍して、ファイルの適切な場所に挿入する方法を探しています。 . したがって、両端でアプリケーションを実行する必要があるように思えます (両方の方法で動作させたい場合は、おそらく同じアプリケーションです)。

于 2011-03-10T12:59:19.707 に答える
0

どの形式で変更がありますか? バイト[]、文字列またはストリーム?

ここを見てください: C#で文字列を圧縮および解凍する

于 2011-03-10T12:58:10.433 に答える