到目前为止,我知道 FileSystemWatcher 可以查看一个文件夹,如果该文件夹中的任何文件被更改、修改等......那么我们可以处理它。但我不确定我应该在我的场景中使用哪个过滤器和事件:监视文件夹,如果将文件添加到该文件夹,则执行 XYZ ... 所以在我的场景中,我不在乎现有文件是否已更改等等..那些应该被忽略...只有当且仅当新文件已添加到该文件夹时才执行 XYZ...
对于这种情况,您建议使用哪个事件和过滤器?
到目前为止,我知道 FileSystemWatcher 可以查看一个文件夹,如果该文件夹中的任何文件被更改、修改等......那么我们可以处理它。但我不确定我应该在我的场景中使用哪个过滤器和事件:监视文件夹,如果将文件添加到该文件夹,则执行 XYZ ... 所以在我的场景中,我不在乎现有文件是否已更改等等..那些应该被忽略...只有当且仅当新文件已添加到该文件夹时才执行 XYZ...
对于这种情况,您建议使用哪个事件和过滤器?
设置观察者:
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = "Blah";
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
| NotifyFilters.FileName;
watcher.Created += new FileSystemEventHandler(OnChanged);
watcher.EnableRaisingEvents = true;
然后实现FileCreated
委托:
private void OnChanged(object source, FileSystemEventArgs e) {
Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType);
}
FileSystemWatcher的详细解释请看这里:http ://www.c-sharpcorner.com/uploadfile/mokhtarb2005/fswatchermb12052005063103am/fswatchermb.aspx
如果要查找添加的文件,则必须查找已创建的文件。
您可以通过设置 WatcherChangeType 枚举的值来指定要监视的更改类型。可能的值如下:
此外,您可以只连接在创建(添加)文件时触发的事件处理程序,而不是实现所有其他事件,因为它们对您来说不感兴趣:
watcher.Created += new FileSystemEventHandler(OnChanged);