其中过滤FileSystemWatcher的做我需要使用寻找新的文件(Which filter of

2019-06-25 13:14发布

到目前为止,我知道FileSystemWatcher的可以看看到一个文件夹,如果任何一个文件夹中的文件被更改,修改,.etc ......然后我们就可以处理它。 但我不知道该过滤器和事件,我应该在我的情况下使用:手表一个文件夹,如果一个文件被添加到该文件夹​​,做XYZ ......所以我的方案,我不关心,如果现有的文件被更改,etc..those应该被忽略......只做XYZ当且仅当一个新的文件已经被添加到该文件夹​​...

你的这种情况建议哪些事件和过滤器?

Answer 1:

设置观察者:

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);
}


Answer 2:

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

你将不得不寻找创建的文件,如果你想寻找添加的文件。

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

  • 所有:创建,删除,更改或文件或文件夹重命名。
  • 更改:文件或文件夹的变化。 该类型的改变包括:改变大小,属性,安全设置,上次写入和上次访问时间。
  • 创建:文件或文件夹的创建。
  • 删除:文件或文件夹的删除。
  • 改名为:文件或文件夹的命名。

此外,你可能只是线了事件处理程序,如果一个文件被创建(添加),并没有实现所有的其他事件,因为它们不适合你有趣的是触发:

watcher.Created += new FileSystemEventHandler(OnChanged);


Answer 3:

有评论下面的代码可能有希望满足你的需要。

public void CallingMethod() {

         using(FileSystemWatcher watcher = new FileSystemWatcher()) {
          //It may be application folder or fully qualified folder location
          watcher.Path = "Folder_Name";

          // Watch for changes in LastAccess and LastWrite times, and
          // the renaming of files or directories.
          watcher.NotifyFilter = NotifyFilters.LastAccess |
           NotifyFilters.LastWrite |
           NotifyFilters.FileName |
           NotifyFilters.DirectoryName;

          // Only watch text files.if you want to track other types then mentioned here
          watcher.Filter = "*.txt";

          // Add event handlers.for monitoring newly added files          
          watcher.Created += OnChanged;


          // Begin watching.
          watcher.EnableRaisingEvents = true;

         }


        }

        // Define the event handlers.
        private static void OnChanged(object source, FileSystemEventArgs e) {
        // Specify what is done when a file is  created with these properties below
        // e.FullPath , e.ChangeType
        }


文章来源: Which filter of FileSystemWatcher do I need to use for finding new files