24

到目前为止,我知道 FileSystemWatcher 可以查看一个文件夹,如果该文件夹中的任何文件被更改、修改等......那么我们可以处理它。但我不确定我应该在我的场景中使用哪个过滤器和事件:监视文件夹,如果将文件添加到该文件夹​​,则执行 XYZ ... 所以在我的场景中,我不在乎现有文件是否已更改等等..那些应该被忽略...只有当且仅当新文件已添加到该文件夹​​时才执行 XYZ...

对于这种情况,您建议使用哪个事件和过滤器?

4

2 回答 2

14

设置观察者:

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);
}
于 2012-06-17T15:13:23.317 回答
2

FileSystemWatcher的详细解释请看这里:http ://www.c-sharpcorner.com/uploadfile/mokhtarb2005/fswatchermb12052005063103am/fswatchermb.aspx

如果要查找添加的文件,则必须查找已创建的文件。

您可以通过设置 WatcherChangeType 枚举的值来指定要监视的更改类型。可能的值如下:

  • 全部:文件或文件夹的创建、删除、更改或重命名。
  • 已更改:文件或文件夹的更改。更改的类型包括:大小、属性、安全设置、上次写入和上次访问时间的更改。
  • Created:创建文件或文件夹。
  • 已删除:删除文件或文件夹。
  • 重命名:重命名文件或文件夹。

此外,您可以只连接在创建(添加)文件时触发的事件处理程序,而不是实现所有其他事件,因为它们对您来说不感兴趣:

watcher.Created += new FileSystemEventHandler(OnChanged);
于 2012-06-17T15:10:21.380 回答