【问题标题】:FileSystemWatcher Class - Excluding DirectoriesFileSystemWatcher 类 - 排除目录
【发布时间】:2011-05-19 22:00:31
【问题描述】:

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

【问题讨论】:

标签: c# .net windows filesystemwatcher


【解决方案1】:

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

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

【讨论】:

  • 疯狂的东西,实际上我有,我只是想知道是否有备用根,不过感谢您的帮助! :)
【解决方案2】:

确定文件是否是事件处理程序中的目录,然后什么都不做:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 2013-02-07
    • 1970-01-01
    • 2014-02-14
    相关资源
    最近更新 更多