我正在编写一个监听位置的工具,最好是远程位置,如果创建了新的文件夹或文件,它会将其下载到本地位置。
目前我正在监听远程文件夹FileSystemWatcher
,当创建新文件夹/文件时,我启动一个计时器,如果计时器达到 X 分钟,它就会开始将其复制到本地。
在“watched”文件夹触发器中创建新文件夹或文件FileSystemWatcher.Changed
但如果有很多子目录,并且有一个大文件复制到监视文件夹,它有时会失败,它只会在复制开始时检测到它,并且我的计时器可以完成直到完成。
所以:
我有 3 台远程计算机/位置,A,B,C
A开始复制一些文件夹/文件到B and
C听B .
How can C检查是否A已完成复制,有或没有FileSystemWatcher
?
我不想不断比较B and C并复制其余文件。
我检查了其他问题,但他们没有回答,或者我已经实施了这些解决方案。1 https://stackoverflow.com/questions/17621775/how-to-determine-whether-a-folder-has-finished-copying-c-sharp, 2 https://stackoverflow.com/questions/45094991/folder-listener-without-using-filesystemwatcher,3 https://stackoverflow.com/questions/4277991/c-sharp-filesystemwatcher-how-to-know-file-copied-completely-into-the-watch-fol
我认为您问的是系统变更日志。也就是说,在您检测到需要复制文件和真正开始复制之间,总会存在文件正在使用、已被删除、更新等情况。这是一篇古老但准确的文章,可以为您提供更多详细信息。
http://www.microsoft.com/msj/0999/journal/journal.aspx http://www.microsoft.com/msj/0999/journal/journal.aspx
来自文章摘要:
“Windows 2000 更改日志是一个数据库,其中包含对 NTFS 5.0 卷上的文件或目录所做的所有更改的列表。每个卷都有自己的更改日志数据库,其中包含反映对该卷的文件和目录发生的更改的记录。 ”
向下滚动到标题ReasonMask and ReturnOnlyOnClose
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)