FileSystemWatcher.Filter Özellik

Tanım

Dizinde hangi dosyaların izleneceğini belirlemek için kullanılan filtre dizesini alır veya ayarlar.

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

Özellik Değeri

Filtre dizesi. Varsayılan değer "*.*" (Tüm dosyaları izler.)

Öznitelikler

Örnekler

Aşağıdaki örnek, çalışma zamanında belirtilen dizini watch için bir FileSystemWatcher oluşturur. Bileşen, dizindeki metin dosyalarının oluşturulması, silinmesi veya yeniden adlandırılması, ve LastAccess zamanındaki LastWrite değişiklikler için watch olarak ayarlanır. Bir dosya değiştirilir, oluşturulur veya silinirse, dosyanın yolu konsola yazdırılır. Dosya yeniden adlandırıldığında, eski ve yeni yollar konsola yazdırılır.

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

Açıklamalar

Tüm dosyalardaki değişiklikleri watch için özelliğini boş bir dize ("") olarak ayarlayınFilter. Belirli bir dosyayı watch için özelliğini dosya adına ayarlayınFilter. Örneğin, dosya MyDoc.txt değişiklikleri watch için özelliğini "MyDoc.txt" olarak ayarlayınFilter. Ayrıca, belirli bir dosya türündeki değişiklikler için watch. Örneğin, herhangi bir metin dosyasındaki değişiklikleri watch için özelliğini "*.txt" olarak ayarlayınFilter. "*.txt|*.doc" gibi birden çok filtrenin kullanımı desteklenmez.

Filter özelliği, nesne olayları almaya başladıktan sonra FileSystemWatcher değiştirilebilir.

İstenmeyen bildirimleri filtreleme hakkında daha fazla bilgi için , IncludeSubdirectoriesve InternalBufferSize özelliklerine NotifyFilterbakın.

Filter aşağıdaki örneklerde gösterildiği gibi eşleşen dosyalar için joker karakterler kabul eder.

Filtre dizesi Aşağıdaki dosyaları izler
*.* Tüm dosyalar (varsayılan). Boş bir dize ("") tüm dosyaları da izler.
*.txt "txt" uzantısına sahip tüm dosyalar.
*recipe.doc "Tarif" ile biten ve "doc" uzantısıyla biten tüm dosyalar.
win*.xml "xml" uzantısıyla "win" ile başlayan tüm dosyalar.
Satış*200?.xls Aşağıdakiyle eşleşir:

- Satışlar Temmuz 2001.xls
- Satış 2002.xls
- Mart 2004.xls Satışları

ancak eşleşmiyor:

- Kas 1999.xls
MyReport.Doc Yalnızca MyReport.doc izler

Şunlara uygulanır

Ürün Sürümler
.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

Ayrıca bkz.