如何仅使用跟踪的更改来压缩文件?

时间:2011-03-10 12:54:32

标签: c# file compression change-tracking

我正在尝试通过网络保持文件同步。我不想在每次更改时传输整个文件,而是要查找并压缩更改的部分并仅传输那些,非常类似于例如颠覆。是否有可靠的C#解决方案来解决这个问题,还是我必须自己编写?

3 个答案:

答案 0 :(得分:2)

关键词是“diff算法”。 c#中有几个实现。

Diff.NETA Generic, Reusable Diff Algorithm in C#看似合理的选择。 Google会为您找到另外几百种选择。

请注意,大多数diff算法都是专为处理基于行的文本文件而设计的 如果你想要二进制数据或部分行,你需要在选择差异库时更加小心。

如果你想压缩差异,你可以使用System.IO.Compression.GZipStream类。

答案 1 :(得分:1)

This post可能对您有帮助。

一般情况下,您正在寻找一种方法来对新文件进行二进制比较,然后去掉旧文件,然后将其压缩,压缩,转移到其他系统,解压缩并将其插入文件中。适当的位置。所以听起来你需要在每一端都运行一个应用程序(如果你想让它在两个方面工作,可能都是同一个应用程序)。

答案 2 :(得分:0)

您有哪些格式的更改? byte [],string或stream?

看看这里: Compress and decompress strings in C#