2011-05-19 48 views
2

目前我正在试图排除与FileSystemWatcher类目录,虽然我已经使用这个:FileSystemWatcher类 - 排除目录

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

FileWatcher.Filter = "$Recycle.Bin"; 

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

如果我参加了过滤掉,所有的文件加载罚款,代码如下:

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

回答

7

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

如果您想排除某些内容,请在由FSW发起的事件中执行此操作。

+0

疯狂的事情,actualy我,我只是想知道如果有一个备用根,感谢您的帮助,虽然! :) – Ken 2011-05-19 22:24:15

0

确定该文件是在你的事件处理程序的目录,什么事都不做,那么:

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... 
}