プロジェクトでLibrsyncを使用して、ファイルの2つのバージョン間の違いを計算し、変更を古いファイルに適用しています。
私のプロジェクトの外では、2つの異なるディレクトリからファイルを読み取り、それらを「パッチ」して、パッチが適用されたディレクトリに書き込む単純なコンソールアプリで動作させました。
コードサンプル -
using (var deltaFile = new FileStream(tmpDeltaFilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None))
{
//myClient is the client of a WCF service I created
myClient.ComputeDelta(file.Id, signatureStream).CopyTo(deltaFile);
originalFile.Seek(0, SeekOrigin.Begin);
deltaFile.Seek(0, SeekOrigin.Begin);
var patchedStream = Librsync.ApplyDelta(originalFile, deltaFile);
using (var patchedFileStream = new FileStream(patchedFilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None))
{
//Code below just hangs. patchedStream pos = 0 and the length is the same as that of the new file.
patchedStream.CopyTo(patchedFileStream);
}
}