我正在尝试通过网络保持文件同步。而不是在每次更改时传输整个文件,我想查找并压缩更改的部分并仅传输那些,非常类似于例如颠覆。这个问题是否有可靠的 C# 解决方案,还是我必须自己编写?
问问题
191 次
3 回答
2
关键词是“差异算法”。c#中有几种实现。
Diff.NET和C# 中的通用、可重用 Diff 算法看起来是合理的选择。谷歌会为你找到另外几百个选择。
请注意,大多数差异算法都是专门为处理基于行的文本文件而设计的。
如果您想区分二进制数据或部分行,则在选择 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 回答