C# FileSystemWatcher 在监控文件夹和文件时的使用方法

2020-06-19 18:59:56王旭

FileSystemWatcher对象为你完成目录监控工作。如果新建、更新或删除一个文件,FileSystemWatcher将提交一个事件,通知你发生了一项改变。这样,新建一个文件后,你的程序立即就知道可以使用这个文件。立即通知改变使得你的系统以更高的效率工作,因为你不能总是“调查”目录中发生的改变,而且在两次目录扫描之间也不会有时间流失。

示例:

class Program
  {
    static void Main(string[] args)
    {
      WatcherStrat(@"D:springProgram", "*.*");
      Console.ReadKey();
 
    }
 
    private static void WatcherStrat(string path, string filter)
    {
 
      FileSystemWatcher watcher = new FileSystemWatcher();
      watcher.Path = path;
      watcher.Filter = filter;
      watcher.Changed += new FileSystemEventHandler(OnProcess);
      watcher.Created += new FileSystemEventHandler(OnProcess);
      watcher.Deleted += new FileSystemEventHandler(OnProcess);
      watcher.Renamed += new RenamedEventHandler(OnRenamed);
      watcher.EnableRaisingEvents = true;
      watcher.NotifyFilter = NotifyFilters.Attributes | NotifyFilters.CreationTime | NotifyFilters.DirectoryName | NotifyFilters.FileName | NotifyFilters.LastAccess
                 | NotifyFilters.LastWrite | NotifyFilters.Security | NotifyFilters.Size;
      watcher.IncludeSubdirectories = true;
    }
 
    private static void OnProcess(object source, FileSystemEventArgs e)
    {
      if (e.ChangeType == WatcherChangeTypes.Created)
      {
        OnCreated(source, e);
      }
      else if (e.ChangeType == WatcherChangeTypes.Changed)
      {
        OnChanged(source, e);
      }
      else if (e.ChangeType == WatcherChangeTypes.Deleted)
      {
        OnDeleted(source, e);
      }
 
    }
    private static void OnCreated(object source, FileSystemEventArgs e)
    {
      Console.WriteLine("文件新建事件处理逻辑 {0} {1} {2}", e.ChangeType, e.FullPath, e.Name);
    }
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
      Console.WriteLine("文件改变事件处理逻辑{0} {1} {2}", e.ChangeType, e.FullPath, e.Name);
    }
    
    private static void OnDeleted(object source, FileSystemEventArgs e)
    {
      Console.WriteLine("文件删除事件处理逻辑{0} {1}  {2}", e.ChangeType, e.FullPath, e.Name);
    }
    
    private static void OnRenamed(object source, RenamedEventArgs e)
    {
      Console.WriteLine("文件重命名事件处理逻辑{0} {1} {2}", e.ChangeType, e.FullPath, e.Name);
    }
  }

运行结果

总结

1、重命名会触发两个事件,Renamed和Changed。

2、FileSystemWatcher对NTFS和FAT32的磁盘监控的效果都是一样吗?

以上就是C# FileSystemWatcher 在监控文件夹和文件时的使用方法的详细内容,更多关于C# FileSystemWatcher的资料请关注易采站长站其它相关文章!