FileSystemWatcher类 – 不包括目录

我目前正在尝试使用FileSystemWatcher类排除目录,尽pipe我已经使用了这个:

FileWatcher.Filter = "C:\\$Recycle.Bin"; 

 FileWatcher.Filter = "$Recycle.Bin"; 

它编译好,但是当我尝试这个时没有显示结果。

如果我把filter,所有文件加载罚款,代码如下:

  static void Main(string[] args) { string DirPath = "C:\\"; FileSystemWatcher FileWatcher = new FileSystemWatcher(DirPath); FileWatcher.IncludeSubdirectories = true; FileWatcher.Filter = "*.exe"; // FileWatcher.Filter = "C:\\$Recycle.Bin"; // FileWatcher.Changed += new FileSystemEventHandler(FileWatcher_Changed); FileWatcher.Created += new FileSystemEventHandler(FileWatcher_Created); // FileWatcher.Deleted += new FileSystemEventHandler(FileWatcher_Deleted); // FileWatcher.Renamed += new RenamedEventHandler(FileWatcher_Renamed); FileWatcher.EnableRaisingEvents = true; Console.ReadKey(); } 

您可能还没有阅读http://msdn.microsoft.com/zh-CN/library/system.io.filesystemwatcher.filter.aspx 。 您不能使用Filter属性排除任何内容。 它只包含匹配过滤器的对象。

如果你想排除一些东西,在FSW发起的事件中做。

确定文件是否是事件处理程序中的目录,然后不执行任何操作:

 private void WatcherOnCreated(object sender, FileSystemEventArgs fileSystemEventArgs) { if (File.GetAttributes(fileSystemEventArgs.FullPath).HasFlag(FileAttributes.Directory)) return; //ignore directories, only process files //TODO: Your code handling files... }