FileSystemWatcher.Filter 属性

定义

获取或设置用于确定在目录中监视哪些文件的筛选器字符串。

C#
public string Filter { get; set; }
C#
[System.ComponentModel.TypeConverter("System.Diagnostics.Design.StringValueConverter, System.Design, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
[System.IO.IODescription("FSW_Filter")]
public string Filter { get; set; }
C#
[System.IO.IODescription("FSW_Filter")]
[System.ComponentModel.TypeConverter("System.Diagnostics.Design.StringValueConverter, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
public string Filter { get; set; }
C#
[System.IO.IODescription("FSW_Filter")]
[System.ComponentModel.SettingsBindable(true)]
[System.ComponentModel.TypeConverter("System.Diagnostics.Design.StringValueConverter, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
public string Filter { get; set; }
C#
[System.ComponentModel.SettingsBindable(true)]
public string Filter { get; set; }

属性值

筛选器字符串。 默认值为“*.*”(监视所有文件)。

属性

示例

以下示例创建 ,FileSystemWatcher以watch在运行时指定的目录。 组件设置为watch,以便更改LastWriteLastAccess时间,以及创建、删除或重命名目录中的文本文件。 如果更改、创建或删除了某个文件,该文件的路径将输出到控制台。 重命名文件时,新旧路径将打印到控制台。

C#
using System;
using System.IO;

namespace MyNamespace
{
    class MyClassCS
    {
        static void Main()
        {
            using var watcher = new FileSystemWatcher(@"C:\path\to\folder");

            watcher.NotifyFilter = NotifyFilters.Attributes
                                 | NotifyFilters.CreationTime
                                 | NotifyFilters.DirectoryName
                                 | NotifyFilters.FileName
                                 | NotifyFilters.LastAccess
                                 | NotifyFilters.LastWrite
                                 | NotifyFilters.Security
                                 | NotifyFilters.Size;

            watcher.Changed += OnChanged;
            watcher.Created += OnCreated;
            watcher.Deleted += OnDeleted;
            watcher.Renamed += OnRenamed;
            watcher.Error += OnError;

            watcher.Filter = "*.txt";
            watcher.IncludeSubdirectories = true;
            watcher.EnableRaisingEvents = true;

            Console.WriteLine("Press enter to exit.");
            Console.ReadLine();
        }

        private static void OnChanged(object sender, FileSystemEventArgs e)
        {
            if (e.ChangeType != WatcherChangeTypes.Changed)
            {
                return;
            }
            Console.WriteLine($"Changed: {e.FullPath}");
        }

        private static void OnCreated(object sender, FileSystemEventArgs e)
        {
            string value = $"Created: {e.FullPath}";
            Console.WriteLine(value);
        }

        private static void OnDeleted(object sender, FileSystemEventArgs e) =>
            Console.WriteLine($"Deleted: {e.FullPath}");

        private static void OnRenamed(object sender, RenamedEventArgs e)
        {
            Console.WriteLine($"Renamed:");
            Console.WriteLine($"    Old: {e.OldFullPath}");
            Console.WriteLine($"    New: {e.FullPath}");
        }

        private static void OnError(object sender, ErrorEventArgs e) =>
            PrintException(e.GetException());

        private static void PrintException(Exception? ex)
        {
            if (ex != null)
            {
                Console.WriteLine($"Message: {ex.Message}");
                Console.WriteLine("Stacktrace:");
                Console.WriteLine(ex.StackTrace);
                Console.WriteLine();
                PrintException(ex.InnerException);
            }
        }
    }
}

注解

若要watch所有文件中的更改,请将 Filter 属性设置为空字符串 (“”) 。 若要watch特定文件,请将 Filter 属性设置为文件名。 例如,若要watch文件 MyDoc.txt 中的更改,请将 Filter 属性设置为“MyDoc.txt”。 还可以watch特定类型的文件中的更改。 例如,若要watch任何文本文件中的更改,请将 Filter 属性设置为“*.txt”。 不支持使用多个筛选器,例如“*.txt|*.doc”。

对象 Filter 开始接收事件后 FileSystemWatcher ,可以更改 属性。

有关筛选掉不需要的通知的详细信息,请参阅 NotifyFilterIncludeSubdirectoriesInternalBufferSize 属性。

Filter 接受用于匹配文件的通配符,如以下示例所示。

筛选器字符串 监视以下文件
*.* 所有文件 (默认) 。 空字符串 (“”) 也会监视所有文件。
*.txt 扩展名为“txt”的所有文件。
*recipe.doc 以“recipe”结尾且扩展名为“doc”的所有文件。
win*.xml 所有以“win”开头且扩展名为“xml”的文件。
Sales*200?.xls 匹配以下内容:

- 销售 7 月 2001.xls 日
- 销售额 8 月 2002.xls 日
- 销售 3 月 2004.xls 日

但不匹配:

- 1999.xls 年 11 月销售额
MyReport.Doc 仅监视 MyReport.doc

适用于

产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

另请参阅