更新文件,而不是替换或覆盖

时间:2014-03-13 07:20:16

标签: c# ftp filesystemwatcher

这更像是一个问题,因为我正在尝试这个。

在互联网上我看到了如何更新.txt文件。嗯,这一切都很好,但是我可以说我有.doxc甚至是.exe甚至是.dll文件。

如果我们对文件进行微小更改,我们真的必须替换(覆盖)整个文件吗?

是否可以更新"该文件,以便我们不会使用过多的数据(通过互联网)。

我想要实现的是使用FileSystemWatcher创建FTP客户端。这将监视计算机上的某个文件夹。如果此文件夹(甚至子目录)发生任何更改,则会上载,删除,重命名或更改文件。但是目前我想知道我是否有一个20MB的.exe文件或其他什么,如果有可能改变.exe中的某些东西,而不是只覆盖整个东西......因此,节省了一些上限。

4 个答案:

答案 0 :(得分:1)

既然你正在试验,我可以提供一些指示。但是我不确定下面的操作是仅仅是更新还是由欠调用的操作系统

重新替换
  • 每种文件类型都有不同的情况。首先尝试基本类型,txt文件,然后是二进制文件等。
  • 您应该将当前文件的完整副本放在某处,正确“应该”比较旧文件以了解更改
  • 然后当对文件进行更改时将其与旧文件进行比较,例如在1 MB的文本文件中,并且更改只有1 KB,则需要构建类似的格式
    • [Text][Offset][[operation]
    • 例如[Mrs.Y][40][Delete]然后[Mr.X][40][Add]
  • 然后您的ftp客户端应该能够实现此格式并对客户端上的本地副本进行更改。

答案 1 :(得分:1)

通常,可以仅部分更新远程文件,但不能更新。

什么会起作用: 1)使用文件系统过滤器驱动程序跟踪文件更改,该驱动程序为您提供有关文件的哪些部分已更新的信息。 2)使用允许部分上传或远程修改文件的协议(例如SFTP)。

至于你的情景:

使用FileSystemWatcher无法执行步骤1。 FTP协议不支持步骤2,不支持修改文件块。

答案 2 :(得分:0)

不能仅将更改上传到.exe文件。我们必须覆盖它。

答案 3 :(得分:0)

@Frederik - 如果FTP支持像HTTP&#PUT命令那样的资源更新,那么这是可能的。尝试探索这个角度。如果您找到了什么,请告诉我们。