我需要使用哪个FileSystemWatcher过滤器来查找新文件

Boh*_*ohn 23 c# filesystemwatcher

到目前为止,我知道FileSystemWatcher可以查看一个文件夹,如果该文件夹中的任何文件被更改,修改,.etc ...然后我们就可以处理它.但我不确定在我的场景中应该使用哪个过滤器和事件:观察文件夹,如果文件被添加到该文件夹​​,请执行XYZ ...所以在我的场景中我不关心现有文件是否已更改等等.应该忽略这些...当且仅当新文件被添加到该文件夹​​时才执行XYZ ...

您为此方案推荐了哪个事件和过滤器?

Dav*_*ant 14

设置观察者:

FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = "Blah";

watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
    | NotifyFilters.FileName;

watcher.Created += new FileSystemEventHandler(OnChanged);

watcher.EnableRaisingEvents = true;
Run Code Online (Sandbox Code Playgroud)

然后实现FileCreated委托:

private void OnChanged(object source, FileSystemEventArgs e) {
    Console.WriteLine("File: " +  e.FullPath + " " + e.ChangeType);
}
Run Code Online (Sandbox Code Playgroud)

  • @JeffBridgman这不直观,但NotifyFilter可以用来微调来自FileSystemWatcher的通知.默认情况下,NotifyFilter设置为DirectoryName | FileName | LastWrite.这些使您能够了解FileSystemWatcher所期望的核心文件活动:创建,更改,删除和重命名.可以更改通知过滤器以增加将被监视并用作输入以触发各种事件的文件/目录属性的范围.虽然,正如你可以推测的那样,大多数其他过滤器只会导致一个Changed"事件. (7认同)
  • 如果我们只关心正在创建但未更改的文件,为什么要设置`NotifyFilter`? (6认同)