Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen.
Übersetzung
Original
Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

FileSystemWatcher-Klasse

Überwacht die Benachrichtigungen über Änderungen im Dateisystem und löst Ereignisse aus, wenn ein Verzeichnis oder eine Datei in einem Verzeichnis geändert werden.

System.Object
  System.MarshalByRefObject
    System.ComponentModel.Component
      System.IO.FileSystemWatcher

Namespace:  System.IO
Assembly:  System (in System.dll)
[IODescriptionAttribute("FileSystemWatcherDesc")]
[PermissionSetAttribute(SecurityAction.LinkDemand, Name = "FullTrust")]
[PermissionSetAttribute(SecurityAction.InheritanceDemand, Name = "FullTrust")]
public class FileSystemWatcher : Component, 
	ISupportInitialize

Der FileSystemWatcher-Typ macht die folgenden Member verfügbar.

  Name Beschreibung
Öffentliche Methode FileSystemWatcher() Initialisiert eine neue Instanz der FileSystemWatcher-Klasse.
Öffentliche Methode FileSystemWatcher(String) Initialisiert eine neue Instanz der FileSystemWatcher-Klasse mit dem für die Überwachung angegebenen Verzeichnis.
Öffentliche Methode FileSystemWatcher(String, String) Initialisiert eine neue Instanz der FileSystemWatcher-Klasse mit dem für die Überwachung angegebenen Verzeichnis und Dateityp.
Zum Seitenanfang
  Name Beschreibung
Geschützte Eigenschaft CanRaiseEvents Ruft einen Wert ab, der angibt, ob die Komponente ein Ereignis auslösen kann. (Von Component geerbt.)
Öffentliche Eigenschaft Container Ruft den IContainer ab, der die Component enthält. (Von Component geerbt.)
Geschützte Eigenschaft DesignMode Ruft einen Wert ab, der angibt, ob sich Component gegenwärtig im Entwurfsmodus befindet. (Von Component geerbt.)
Öffentliche Eigenschaft EnableRaisingEvents Ruft einen Wert ab, der angibt, ob die Komponente aktiviert ist, oder legt diesen fest.
Geschützte Eigenschaft Events Ruft die Liste der Ereignishandler ab, die dieser Component angefügt sind. (Von Component geerbt.)
Öffentliche Eigenschaft Filter Ruft die Filterzeichenfolge ab, mit der die in einem Verzeichnis zu überwachenden Dateien bestimmt werden, oder legt diese fest.
Öffentliche Eigenschaft IncludeSubdirectories Ruft einen Wert ab, der angibt, ob die Unterverzeichnisse im angegebenen Pfad überwacht werden sollen, oder legt diesen fest.
Öffentliche Eigenschaft InternalBufferSize Ruft die Größe (in Bytes) des internen Puffers ab oder legt diese fest.
Öffentliche Eigenschaft NotifyFilter Ruft den Typ der zu überwachenden Änderungen ab oder legt diesen fest.
Öffentliche Eigenschaft Path Ruft den Pfad des zu überwachenden Verzeichnisses ab oder legt diesen fest.
Öffentliche Eigenschaft Site Ruft ISite für FileSystemWatcher ab oder legt dieses fest. (Überschreibt Component.Site.)
Öffentliche Eigenschaft SynchronizingObject Ruft das Objekt ab, das zum Marshallen von Ereignishandleraufrufen verwendet wird, die aufgrund einer Verzeichnisänderung ausgegeben werden, oder legt dieses fest.
Zum Seitenanfang
  Name Beschreibung
Öffentliche Methode BeginInit Beginnt die Initialisierung von FileSystemWatcher für die Verwendung in einem Formular oder durch eine andere Komponente. Die Initialisierung erfolgt zur Laufzeit.
Öffentliche Methode CreateObjRef Erstellt ein Objekt mit allen relevanten Informationen, die zum Generieren eines Proxys für die Kommunikation mit einem Remoteobjekt erforderlich sind. (Von MarshalByRefObject geerbt.)
Öffentliche Methode Dispose() Gibt sämtliche von der Component verwendeten Ressourcen frei. (Von Component geerbt.)
Geschützte Methode Dispose(Boolean) Gibt die vom FileSystemWatcher verwendeten nicht verwalteten Ressourcen und optional auch die verwalteten Ressourcen frei. (Überschreibt Component.Dispose(Boolean).)
Öffentliche Methode EndInit Beendet die Initialisierung von FileSystemWatcher für die Verwendung in einem Formular oder durch eine andere Komponente. Die Initialisierung erfolgt zur Laufzeit.
Öffentliche Methode Equals(Object) Bestimmt, ob das angegebene Object und das aktuelle Object gleich sind. (Von Object geerbt.)
Geschützte Methode Finalize Gibt nicht verwaltete Ressourcen frei und führt andere Bereinigungsvorgänge durch, bevor die Component durch die Garbage Collection wieder zugänglich gemacht wird. (Von Component geerbt.)
Öffentliche Methode GetHashCode Fungiert als Hashfunktion für einen bestimmten Typ. (Von Object geerbt.)
Öffentliche Methode GetLifetimeService Ruft das aktuelle Lebensdauerdienstobjekt ab, das die Lebensdauerrichtlinien für diese Instanz steuert. (Von MarshalByRefObject geerbt.)
Geschützte Methode GetService Gibt ein Objekt zurück, das einen von der Component oder von deren Container bereitgestellten Dienst darstellt. (Von Component geerbt.)
Öffentliche Methode GetType Ruft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Öffentliche Methode InitializeLifetimeService Ruft ein Lebensdauerdienstobjekt ab, mit dem die Lebensdauerrichtlinien für diese Instanz gesteuert werden können. (Von MarshalByRefObject geerbt.)
Geschützte Methode MemberwiseClone() Erstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Geschützte Methode MemberwiseClone(Boolean) Erstellt eine flache Kopie des aktuellen MarshalByRefObject-Objekts. (Von MarshalByRefObject geerbt.)
Geschützte Methode OnChanged Löst das Changed-Ereignis aus.
Geschützte Methode OnCreated Löst das Created-Ereignis aus.
Geschützte Methode OnDeleted Löst das Deleted-Ereignis aus.
Geschützte Methode OnError Löst das Error-Ereignis aus.
Geschützte Methode OnRenamed Löst das Renamed-Ereignis aus.
Öffentliche Methode ToString Gibt einen String zurück, der den Namen dieser Component enthält, sofern vorhanden. Diese Methode sollte nicht überschrieben werden. (Von Component geerbt.)
Öffentliche Methode WaitForChanged(WatcherChangeTypes) Eine synchrone Methode, die eine Struktur mit spezifischen Informationen zur eingetretenen Änderung zurückgibt, sofern diese mit der Art der Änderung übereinstimmt, die überwacht werden soll.
Öffentliche Methode WaitForChanged(WatcherChangeTypes, Int32) Eine synchrone Methode, die eine Struktur mit spezifischen Informationen zur eingetretenen Änderung zurückgibt, sofern diese mit der Art der zu überwachenden Änderung übereinstimmt und die Zeit (in Millisekunden) bis zum Timeout nicht abgelaufen ist.
Zum Seitenanfang
  Name Beschreibung
Öffentliches Ereignis Changed Tritt ein, wenn im angegebenen Path eine Datei oder ein Verzeichnis geändert wird.
Öffentliches Ereignis Created Tritt ein, wenn im angegebenen Path eine Datei oder ein Verzeichnis erstellt wird.
Öffentliches Ereignis Deleted Tritt ein, wenn im angegebenen Path eine Datei oder ein Verzeichnis gelöscht wird.
Öffentliches Ereignis Disposed Tritt ein, wenn die Komponente durch einen Aufruf der Dispose-Methode freigegeben wird. (Von Component geerbt.)
Öffentliches Ereignis Error Tritt ein, wenn der interne Puffer überläuft.
Öffentliches Ereignis Renamed Tritt ein, wenn im angegebenen Path eine Datei oder ein Verzeichnis umbenannt wird.
Zum Seitenanfang

Mit FileSystemWatcher können Sie die Änderungen in einem angegebenen Verzeichnis überwachen lassen. Änderungen in Dateien und Unterverzeichnissen des angegebenen Verzeichnisses können überwacht werden. Sie können eine Komponente zum Überwachen von Dateien auf einem lokalen Computer, einem Netzlaufwerk oder einem Remotecomputer erstellen.

Um Änderungen an allen Dateien zu überwachen, legen Sie die Filter-Eigenschaft auf eine leere Zeichenfolge ("") fest, oder verwenden Sie Platzhalterzeichen ("*.*"). Legen Sie zum Überwachen einer bestimmten Datei die Filter-Eigenschaft auf den Dateinamen fest. Damit z. B. die Datei MyDoc.txt auf Änderungen überwacht wird, legen Sie die Filter-Eigenschaft auf MyDoc.txt fest. Es kann auch ein bestimmten Dateityp auf Änderungen überwacht werden. Damit z. B. Textdateien auf Änderungen überwacht werden, legen Sie die Filter-Eigenschaft auf "*.txt" fest.

Ein Verzeichnis oder eine Datei kann auf verschiedene Arten von Änderungen überwacht werden. Dateien oder Verzeichnisse können z. B. auf Änderungen in Bezug auf Attributes, Datum und Uhrzeit von LastWrite und Size überwacht werden. Legen Sie dafür die NotifyFilter-Eigenschaft auf einen der NotifyFilters-Werte fest. Weitere Informationen darüber, welche Arten von Änderungen überwacht werden können, finden Sie unter NotifyFilters.

Das Umbenennen, Löschen oder Erstellen von Dateien oder Verzeichnissen kann überwacht werden. Das Umbenennen von Textdateien wird z. B. überwacht, wenn Sie die Filter-Eigenschaft auf "*.txt" festlegen und die WaitForChanged-Methode mit dem auf Renamed festgelegten Parameter aufrufen.

Das Betriebssystem Windows meldet der Komponente Änderungen an Dateien, die in einem von FileSystemWatcher erstellten Puffer vorgenommen wurden. Wenn in kurzen Abständen Änderungen vorgenommen werden, kann es zu einem Überlauf des Puffers kommen. Dies führt dazu, dass die Komponente die Änderungen im Verzeichnis nicht mehr verfolgen kann. Die Komponente kann dann nur allgemeine Benachrichtigungen bereitstellen. Das Erhöhen der Puffergröße mit der InternalBufferSize-Eigenschaft ist aufwändig, da Systemspeicher genutzt wird, der nicht auf die Festplatte ausgelagert werden kann. Der Puffer sollte deshalb so klein wie möglich gehalten werden, aber dennoch groß genug, um Dateiänderungsergebnisse erfassen zu können. Um einen Überlauf des Puffers zu vermeiden, verwenden Sie zum Herausfiltern nicht erwünschter Änderungsbenachrichtigungen die NotifyFilter-Eigenschaft und die IncludeSubdirectories-Eigenschaft.

Eine Liste der anfänglichen Eigenschaftswerte für eine Instanz von FileSystemWatcher finden Sie unter FileSystemWatcher-Konstruktor.

Beachten Sie beim Verwenden der FileSystemWatcher-Klasse Folgendes.

  • Versteckte Dateien werden nicht ignoriert.

  • In einigen Systemen meldet FileSystemWatcher Änderungen an Dateien mit dem kurzen 8.3-Dateinamenformat. Eine Änderung an "LongFileName.LongExtension" würde dann beispielsweise als "LongFil~.Lon" gemeldet werden.

  • Diese Klasse enthält eine Link- und eine Vererbungsanforderung auf der Klassenebene, die auf alle Member angewendet wird. Eine SecurityException wird ausgelöst, wenn der direkte Aufrufer oder die abgeleitete Klasse nicht über vollständige vertrauenswürdige Berechtigungen verfügen. Ausführliche Informationen über Sicherheitsanforderungen finden Sie unter Verknüpfungsaufrufe.

  • Die maximale Größe, die Sie für die InternalBufferSize-Eigenschaft zum Überwachen eines Verzeichnisses über das Netzwerk festlegen können, beträgt 64 KB.

Hinweis Hinweis

Die Ausführung von FileSystemWatcher unter Windows 98 wird nicht unterstützt.

Kopieren und Verschieben von Ordnern

Das Betriebssystem und das FileSystemWatcher-Objekt interpretieren eine Ausschneide- und Einfügeaktion oder Verschiebeaktion als Umbenennungsaktion für einen Ordner und seinen Inhalt. Wenn Sie einen Ordner mit Dateien ausschneiden und in einen Ordner einfügen, der überwacht wird, wird nur der Ordner vom FileSystemWatcher-Objekt als neu angegeben, nicht aber sein Inhalt, da im Wesentlichen nur eine Umbenennung stattgefunden hat.

Wenn Sie darüber benachrichtigt werden wollen, dass die Inhalte von Ordnern verschoben oder in einen überwachten Ordner kopiert wurden, stellen Sie die OnChanged-Ereignishandlermethode und die OnRenamed-Ereignishandlermethode bereit, wie in der folgenden Tabelle vorgeschlagen.

Ereignishandler

Behandelte Ereignisse

Ausführung

OnChanged

Changed, Created, Deleted

Berichte über Änderungen in Dateiattributen, erstellten und gelöschten Dateien.

OnRenamed

Renamed

Auflistung der alten und neuen Pfade umbenannter Dateien und Ordner, die bei Bedarf rekursiv erweitert werden.

Ereignisse und Puffergrößen

Im Folgenden werden verschiedene Faktoren erläutert, die sich auf die Art des ausgelösten Dateisystemänderungs-Ereignisses auswirken:

  • Häufige Vorgänge in Dateisystemen können mehrere Ereignisse auslösen. Wenn eine Datei z. B. von einem Verzeichnis in ein anderes verschoben wird, werden möglicherweise mehrere OnChanged-Ereignisse und einige OnCreated-Ereignisse sowie OnDeleted-Ereignisse ausgelöst. Das Verschieben einer Datei ist ein komplexer Vorgang, der aus mehreren einfachen Vorgängen besteht und daher mehrere Ereignisse auslöst. Ebenso können einige Anwendungen (z. B. Antivirensoftware) zusätzliche Ereignisse in Dateisystemen auslösen, die von FileSystemWatcher erkannt werden.

  • FileSystemWatcher kann Datenträger nur so lange überwachen, wie diese nicht gewechselt bzw. entfernt werden. Der FileSystemWatcher löst keine Ereignisse für CDs und DVDs aus, da weder Zeitstempel noch Eigenschaften geändert werden können. Auf Remotecomputern muss eine der erforderlichen Plattformen installiert sein, damit die Komponente ordnungsgemäß funktioniert.

  • Wenn mehrere FileSystemWatcher-Objekte den gleichen UNC-Pfad in Windows XP vor Service Pack 1 oder Windows 2000 SP2 oder früher überwachen, löst nur eins der Objekte ein Ereignis aus. Auf Computern unter Windows XP SP1 und höher, Windows 2000 SP3 oder höher bzw. Windows Server 2003 lösen alle FileSystemWatcher-Objekte die entsprechenden Ereignisse aus.

Beachten Sie, dass ein FileSystemWatcher möglicherweise ein Ereignis verpasst, wenn die Puffergröße überschritten wird. Um das Verpassen von Ereignissen zu vermeiden, folgen Sie diesen Richtlinien:

  • Vergrößern Sie die Puffergröße, indem Sie die InternalBufferSize-Eigenschaft festlegen.

  • Vermeiden Sie die Überwachung von Dateien mit langen Dateinamen, da ein langer Dateiname dazu beiträgt, den Puffer zu füllen. Erwägen Sie, diese Dateien mit kürzeren Namen umzubenennen.

  • Halten Sie den Ereignisbehandlungscode so kurz wie möglich.

Im folgenden Beispiel wird ein FileSystemWatcher erstellt, mit dem das zur Laufzeit angegebene Verzeichnis überwacht wird. In der Komponente wird festgelegt, dass Textdateien im Verzeichnis auf Änderungen in Bezug auf die Uhrzeit von LastWrite und LastAccess sowie das Erstellen, Löschen oder Umbenennen überwacht werden. Beim Ändern, Erstellen oder Löschen einer Datei wird der Dateipfad an die Konsole ausgegeben. Beim Umbenennen einer Datei werden der alte und der neue Pfad an die Konsole ausgegeben.

Verwenden Sie für dieses Beispiel den System.Diagnostics-Namespace und den System.IO-Namespace.


using System;
using System.IO;
using System.Security.Permissions;

public class Watcher
{

    public static void Main()
    {
    Run();

    }

    [PermissionSet(SecurityAction.Demand, Name="FullTrust")]
    public static void Run()
    {
        string[] args = System.Environment.GetCommandLineArgs();

        // If a directory is not specified, exit program.
        if(args.Length != 2)
        {
            // Display the proper way to call the program.
            Console.WriteLine("Usage: Watcher.exe (directory)");
            return;
        }

        // Create a new FileSystemWatcher and set its properties.
        FileSystemWatcher watcher = new FileSystemWatcher();
        watcher.Path = args[1];
        /* Watch for changes in LastAccess and LastWrite times, and
           the renaming of files or directories. */
        watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
           | NotifyFilters.FileName | NotifyFilters.DirectoryName;
        // Only watch text files.
        watcher.Filter = "*.txt";

        // Add event handlers.
        watcher.Changed += new FileSystemEventHandler(OnChanged);
        watcher.Created += new FileSystemEventHandler(OnChanged);
        watcher.Deleted += new FileSystemEventHandler(OnChanged);
        watcher.Renamed += new RenamedEventHandler(OnRenamed);

        // Begin watching.
        watcher.EnableRaisingEvents = true;

        // Wait for the user to quit the program.
        Console.WriteLine("Press \'q\' to quit the sample.");
        while(Console.Read()!='q');
    }

    // Define the event handlers.
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
        // Specify what is done when a file is changed, created, or deleted.
       Console.WriteLine("File: " +  e.FullPath + " " + e.ChangeType);
    }

    private static void OnRenamed(object source, RenamedEventArgs e)
    {
        // Specify what is done when a file is renamed.
        Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
    }
}



.NET Framework

Unterstützt in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Datum

Versionsgeschichte

Grund

Dezember 2010

Die Verwendung des Puffers wurde genauer erläutert.

Informationsergänzung.

Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Community-Inhalt Hinzufügen
Anmerkungen FAQ