如何知道在 Windows 中复制是否完成?

Cag*_*tay 3 c# windows

我正在编写一个侦听位置的工具,最好是远程位置,如果创建了新文件夹或文件,它会将其下载到本地位置。

目前我正在使用 侦听远程文件夹FileSystemWatcher,当创建新文件夹/文件时,我启动一个计时器,如果计时器达到 X 分钟,它开始将其复制到本地。在“监视”文件夹中创建新文件夹或文件会触发,FileSystemWatcher.Changed但如果有很多子目录,并且如果有大文件复制到监视文件夹,它有时会失败,它仅在复制开始时检测到,我的计时器可以完成直到它完成了。

所以:我有 3 台远程计算机/位置,ABC

A开始将一些文件夹/文件复制到B并且 C收听B

C如何检查A是否已完成复制FileSystemWatcher?我不想经常比较BC并复制其余文件。

我检查了其他问题,但他们没有回答,或者我已经实施了这些解决方案。 1 , 2 , 3

No *_*rns 5

我想您是在询问系统更改日志。也就是说,在您检测到需要复制文件和真正开始复制之间,总会有文件正在使用、已被删除、更新等情况。这是一篇古老但准确的文章,可以为您提供更多详细信息。

http://www.microsoft.com/msj/0999/journal/journal.aspx

来自文章摘要:

“Windows 2000 更改日志是一个数据库,其中包含对 NTFS 5.0 卷上的文件或目录所做的每个更改的列表。每个卷都有自己的更改日志数据库,其中包含反映该卷的文件和目录发生的更改的记录。 ”

向下滚动到标题 ReasonMask and ReturnOnlyOnClose