【发布时间】:2011-03-10 12:54:32
【问题描述】:
我正在尝试通过网络保持文件同步。而不是在每次更改时传输整个文件,我想查找并压缩更改的部分并仅传输那些,非常类似于例如颠覆。有没有可靠的 C# 解决这个问题,还是我必须自己写?
【问题讨论】:
-
我宁愿不用外部程序。
标签: c# file compression change-tracking
我正在尝试通过网络保持文件同步。而不是在每次更改时传输整个文件,我想查找并压缩更改的部分并仅传输那些,非常类似于例如颠覆。有没有可靠的 C# 解决这个问题,还是我必须自己写?
【问题讨论】:
标签: c# file compression change-tracking
关键词是“差异算法”。 c#中有几种实现方式。
Diff.NET 和 A Generic, Reusable Diff Algorithm in C# 看起来是合理的选择。 Google 会为您找到另外几百种选择。
请注意,大多数差异算法都是专门为处理基于行的文本文件而设计的。
如果您想对二进制数据或部分行进行比较,则在选择 diff 库时需要更加小心。
如果你也想压缩差异,你可以使用System.IO.Compression.GZipStream 类。
【讨论】:
This post 可以帮到你。
一般来说,您正在寻找一种方法,将新文件与旧文件进行二进制比较,然后只删除更改的字节,压缩它们,将它们传输到另一个系统,解压缩并将它们插入到文件中适当的位置。所以听起来您需要在每一端运行一个应用程序(如果您希望它以两种方式工作,可能是同一个应用程序)。
【讨论】:
您有哪些格式的更改? byte[],字符串还是流?
【讨论】: