我需要使用文件系统观察器的哪个过滤器来查找新文件

本文关键字:查找 过滤器 新文件 文件 文件系统 观察 | 更新日期: 2023-09-27 18:37:24

到目前为止,我知道FileSystemWatcher可以查看一个文件夹,如果该文件夹中的任何文件被更改,修改,.etc...那么我们可以处理它。但我不确定我应该在我的场景中使用哪个过滤器和事件:监视文件夹,如果将文件添加到该文件夹,请执行 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);
}

请查看此处有关文件系统观察器的详细说明: http://www.c-sharpcorner.com/uploadfile/mokhtarb2005/fswatchermb12052005063103am/fswatchermb.aspx

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

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

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

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

watcher.Created += new FileSystemEventHandler(OnChanged);