我目前正在尝试使用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... }