Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更新文件,而不是替换或覆盖_C#_Ftp_Filesystemwatcher - Fatal编程技术网

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

C# 更新文件,而不是替换或覆盖,c#,ftp,filesystemwatcher,C#,Ftp,Filesystemwatcher,这更像是一个问题,因为我正在试验这个 我在互联网上看到了如何更新.txt文件。这很好,但假设我有一个.doxc甚至一个.exe甚至一个.dll文件 如果我们对一个文件做了一个小的更改,我们真的必须替换(覆盖)整个文件吗 有没有可能“更新”文件,这样我们就不会使用太多的数据(通过互联网) 我试图实现的是使用FileSystemWatcher创建一个FTP客户端。这将监视计算机上的某个文件夹。如果此文件夹(甚至子目录)中有任何更改,则会上载、删除、重命名或更改文件。但现在我想知道我是否有,比如说,一

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

我在互联网上看到了如何更新.txt文件。这很好,但假设我有一个.doxc甚至一个.exe甚至一个.dll文件

如果我们对一个文件做了一个小的更改,我们真的必须替换(覆盖)整个文件吗

有没有可能“更新”文件,这样我们就不会使用太多的数据(通过互联网)


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

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

@Frederik-如果FTP支持更新资源,如HTTP的PUT命令,这是可能的。试着从这个角度去探索。如果您发现了什么,请告诉我们。

由于您正在进行实验,我可以提供一些指导。但我不知道下面的操作是否只是更新,或者是被underlysing os调用新替换

  • 每种文件类型有不同的案例。首先尝试使用基本类型,txt文件,然后是二进制文件等
  • 您应该在某个地方拥有当前文件的整个副本,因为您“应该”比较旧文件以了解有哪些更改
  • 然后,当对文件进行更改时,将其与旧文件进行比较(例如,在一个1 MB的文本文件中,更改仅为1 KB),您将需要构建如下格式
    • [Text][Offset][[operation]
    • e、 g)
      [Y夫人][40][删除]
      然后
      [X先生][40][添加]
  • 然后,您的ftp客户端应该能够实现此格式,并在客户端上更改本地副本

一般来说,只能部分更新远程文件,但在您的情况下不能

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

至于你的情况:

FileSystemWatcher无法执行步骤1。
第2步不适用于不支持修改文件块的FTP协议。

Hmmm…这很有意义。我会在进行过程中不断更新。谢谢。我想保持一切皆有可能的心态。FTP不支持部分上载。这为我打开了一个全新的视图。谢谢。