C#:使用FileSystemWatcher监视复制或移动的文件

nok*_*nal 8 .net c# filesystems filesystemwatcher

我在这里和整个网络上遇到了几个"解决方案"但似乎没有一个符合要求.

我要做的是让app监视新文件的文件夹(通过创建,移动或复制)并对这些对象执行操作.就是这种情况,我转向FileSystemWatcher类来执行此操作.

问题是文件FileSystemWatcher.Created事件在创建整个文件之前被触发(最明显的是通过大文件的副本看到).

有没有办法让这个事件在文件创建结束时触发而不是从头开始?我尝试过FileSystemWatcher.NofityFilter属性的各种组合但没有成功.

提前致谢!:)

Pau*_*rry 6

我已经针对这种情况使用了几种解决方案.

  1. 如果您可以使用该文件的创建者并使用该文件的重命名方案.例如.在创建文件时将其创建为__Name_,并在流程结束时将其重命名为Name,事件将触发并且您有一个完整的文件.

  2. 触发器触发时检查是否可以对文件进行独占的只读锁定.如果可以,则已完成对文件的写入操作.(我在另一个问题中写了一些关于此问题的表格应用程序和Windows服务(或任何n层,确实)之间保持设置同步)

您可以将#2之类的内容集成到Changed Event中,然后您将获得结果.