我在本地文件系统目录上设置了 FsWatcher。我只想知道文件何时添加到目录中,以便可以将它们移动到另一个文件系统。我似乎能够检测到第一个文件何时进入,但实际上我想知道给定复制操作中的所有文件何时完成。
如果我使用 Windows 资源管理器将文件从一个目录复制到另一个目录,资源管理器会告诉我传输还剩 n 秒,因此虽然每个文件的开始传输和结束传输都有一些活动,但看起来所有文件的开始传输和结束传输都有一些东西。
我想知道是否可以使用 .NET Framework 做类似的事情。我想知道“所有”文件何时存在,而不仅仅是“事务”中的单个文件。如果没有任何内容,也许我应该想出某种等待/反击的方法,以便仅在工作“完成”时才进行我的活动。
不确定我是否百分百理解这一点,请大家发表评论。
Thanks.
我过去实现这一点的方法是拥有一个具有特殊名称的“标记”文件,例如'结尾'。该文件始终是最后写入的文件,并用作多文件事务何时完成的指示器。如果只有一个线程正在写入这些文件集,那么这种方法就可以正常工作。
如果有许多线程,每个线程都可能正在写入一组文件,那么您需要以某种方式将每个“结束”文件与其正在标记的文件集关联起来。一种方法是在文件名中包含 GUID(或其他一些唯一标识符),例如
{ GUID1.file1.bin,GUID1.file2.bin,GUID1.end }
{ GUID2.file1.bin,GUID2.file2.bin,GUID2.end }
另一种方法是将每组中的所有文件压缩到一个 ZIP 文件中,这样您只需监视单个文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)