【问题标题】:How do I compress files by only using tracked changes?如何仅使用跟踪更改来压缩文件?
【发布时间】:2011-03-10 12:54:32
【问题描述】:

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

【问题讨论】:

  • 我宁愿不用外部程序。

标签: c# file compression change-tracking


【解决方案1】:

关键词是“差异算法”。 c#中有几种实现方式。

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

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

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

【讨论】:

  • 是的,它主要是关于二进制文件。链接看起来很不错。
【解决方案2】:

This post 可以帮到你。

一般来说,您正在寻找一种方法,将新文件与旧文件进行二进制比较,然后只删除更改的字节,压缩它们,将它们传输到另一个系统,解压缩并将它们插入到文件中适当的位置。所以听起来您需要在每一端运行一个应用程序(如果您希望它以两种方式工作,可能是同一个应用程序)。

【讨论】:

  • 是的,正如您所描述的,我将在两台机器上运行该应用程序。链接的帖子看起来很有趣。
  • 听起来是个有趣的项目,希望对您有所帮助。
【解决方案3】:

您有哪些格式的更改? byte[],字符串还是流?

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

【讨论】:

  • 我还没有更改,这是问题的一部分。 :) 文件本身是 byte[]
猜你喜欢
  • 2014-05-21
  • 2012-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多