Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. |
Übersetzung
Original
|
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.
Assembly: System (in System.dll)
Der FileSystemWatcher-Typ macht die folgenden Member verfügbar.
| Name | Beschreibung | |
|---|---|---|
|
FileSystemWatcher() | Initialisiert eine neue Instanz der FileSystemWatcher-Klasse. |
|
FileSystemWatcher(String) | Initialisiert eine neue Instanz der FileSystemWatcher-Klasse mit dem für die Überwachung angegebenen Verzeichnis. |
|
FileSystemWatcher(String, String) | Initialisiert eine neue Instanz der FileSystemWatcher-Klasse mit dem für die Überwachung angegebenen Verzeichnis und Dateityp. |
| Name | Beschreibung | |
|---|---|---|
|
CanRaiseEvents | Ruft einen Wert ab, der angibt, ob die Komponente ein Ereignis auslösen kann. (Von Component geerbt.) |
|
Container | Ruft den IContainer ab, der die Component enthält. (Von Component geerbt.) |
|
DesignMode | Ruft einen Wert ab, der angibt, ob sich Component gegenwärtig im Entwurfsmodus befindet. (Von Component geerbt.) |
|
EnableRaisingEvents | Ruft einen Wert ab, der angibt, ob die Komponente aktiviert ist, oder legt diesen fest. |
|
Events | Ruft die Liste der Ereignishandler ab, die dieser Component angefügt sind. (Von Component geerbt.) |
|
Filter | Ruft die Filterzeichenfolge ab, mit der die in einem Verzeichnis zu überwachenden Dateien bestimmt werden, oder legt diese fest. |
|
IncludeSubdirectories | Ruft einen Wert ab, der angibt, ob die Unterverzeichnisse im angegebenen Pfad überwacht werden sollen, oder legt diesen fest. |
|
InternalBufferSize | Ruft die Größe (in Bytes) des internen Puffers ab oder legt diese fest. |
|
NotifyFilter | Ruft den Typ der zu überwachenden Änderungen ab oder legt diesen fest. |
|
Path | Ruft den Pfad des zu überwachenden Verzeichnisses ab oder legt diesen fest. |
|
Site | Ruft ISite für FileSystemWatcher ab oder legt dieses fest. (Überschreibt Component.Site.) |
|
SynchronizingObject | Ruft das Objekt ab, das zum Marshallen von Ereignishandleraufrufen verwendet wird, die aufgrund einer Verzeichnisänderung ausgegeben werden, oder legt dieses fest. |
| Name | Beschreibung | |
|---|---|---|
|
BeginInit | Beginnt die Initialisierung von FileSystemWatcher für die Verwendung in einem Formular oder durch eine andere Komponente. Die Initialisierung erfolgt zur Laufzeit. |
|
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.) |
|
Dispose() | Gibt sämtliche von der Component verwendeten Ressourcen frei. (Von Component geerbt.) |
|
Dispose(Boolean) | Gibt die vom FileSystemWatcher verwendeten nicht verwalteten Ressourcen und optional auch die verwalteten Ressourcen frei. (Überschreibt Component.Dispose(Boolean).) |
|
EndInit | Beendet die Initialisierung von FileSystemWatcher für die Verwendung in einem Formular oder durch eine andere Komponente. Die Initialisierung erfolgt zur Laufzeit. |
|
Equals(Object) | Bestimmt, ob das angegebene Object und das aktuelle Object gleich sind. (Von Object geerbt.) |
|
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.) |
|
GetHashCode | Fungiert als Hashfunktion für einen bestimmten Typ. (Von Object geerbt.) |
|
GetLifetimeService | Ruft das aktuelle Lebensdauerdienstobjekt ab, das die Lebensdauerrichtlinien für diese Instanz steuert. (Von MarshalByRefObject geerbt.) |
|
GetService | Gibt ein Objekt zurück, das einen von der Component oder von deren Container bereitgestellten Dienst darstellt. (Von Component geerbt.) |
|
GetType | Ruft den Type der aktuellen Instanz ab. (Von Object geerbt.) |
|
InitializeLifetimeService | Ruft ein Lebensdauerdienstobjekt ab, mit dem die Lebensdauerrichtlinien für diese Instanz gesteuert werden können. (Von MarshalByRefObject geerbt.) |
|
MemberwiseClone() | Erstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.) |
|
MemberwiseClone(Boolean) | Erstellt eine flache Kopie des aktuellen MarshalByRefObject-Objekts. (Von MarshalByRefObject geerbt.) |
|
OnChanged | Löst das Changed-Ereignis aus. |
|
OnCreated | Löst das Created-Ereignis aus. |
|
OnDeleted | Löst das Deleted-Ereignis aus. |
|
OnError | Löst das Error-Ereignis aus. |
|
OnRenamed | Löst das Renamed-Ereignis aus. |
|
ToString | Gibt einen String zurück, der den Namen dieser Component enthält, sofern vorhanden. Diese Methode sollte nicht überschrieben werden. (Von Component geerbt.) |
|
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. |
|
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. |
| Name | Beschreibung | |
|---|---|---|
|
Changed | Tritt ein, wenn im angegebenen Path eine Datei oder ein Verzeichnis geändert wird. |
|
Created | Tritt ein, wenn im angegebenen Path eine Datei oder ein Verzeichnis erstellt wird. |
|
Deleted | Tritt ein, wenn im angegebenen Path eine Datei oder ein Verzeichnis gelöscht wird. |
|
Disposed | Tritt ein, wenn die Komponente durch einen Aufruf der Dispose-Methode freigegeben wird. (Von Component geerbt.) |
|
Error | Tritt ein, wenn der interne Puffer überläuft. |
|
Renamed | Tritt ein, wenn im angegebenen Path eine Datei oder ein Verzeichnis umbenannt wird. |
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
|
|---|
|
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.
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); } }
-
SecurityPermission
zum Aufrufen von ProcessStartInfo-Membern. Anforderungswert: LinkDemand; Benannte Berechtigungssätze: FullTrust.
-
SecurityPermission
zum Ableiten von der ProcessStartInfo-Klasse. Anforderungswert: InheritanceDemand; Benannte Berechtigungssätze: FullTrust.
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.
Hinweis