繁体   English   中英

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

[英]Update file, not replace or overwrite

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

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

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

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

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

既然你正在试验,我可以提供一些指示。 但我不确定以下操作是否仅仅是更新或者由于欠调的操作系统新替换

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

通常,可以仅部分更新远程文件,但不是在您的情况下。

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

至于你的场景:

FileSystemWatcher无法实现步骤1。 FTP协议不支持步骤2,不支持修改文件块。

不可以只将更改上传到.exe文件。我们必须覆盖它。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM