Verzeichnisse überwachen: Der File-System-Watcher spart Zeit

Sobald Dateien oder Verzeichnisse erstellt oder verändert werden, müssen Systeme gewisse Aufgaben ausführen, zum Beispiel eine Datei parsen und in die Datenbank eintragen. ZDNet demonstriert, wie der File-System-Watcher dies vereinfacht.

Um Änderungen in einem Dateisystem zu überwachen, bietet sich der File-System-Watcher an. Warum? Weil er pro Überwachter Datei mindestens zehn Sekunden einspart. Ein Importsystem, das Daten aus Textdateien in eine Datenbank übernimmt, ist ein gutes Beispiel, um die Arbeit mit dem File-System-Watcher zu erklären, denn ein solches Programm sollte Verzeichnisse stets auf neu erstellte Dateien hin überprüfen. Sobald eine Datei erstellt wurde, muss das Programm diese Datei öffnen, sie parsen und dann die Daten in die Datenbank einfügen. Häufig geschieht das, indem eine Verzeichnisabfrage durchgeführt wird. Dadurch werden alle neuen Dateien aufgezählt, die seit der letzten Abfrage hinzugekommen sind. Das .NET Framework bietet Entwicklern eine Alternative zu dieser ständigen Systemabfrage: das FileSystemWatcher-Objekt.

Das FileSystemWatcher-Objekt übernimmt die Überwachung eines Verzeichnisses. Sobald eine Datei erstellt, aktualisiert oder gelöscht wird, gibt der File-System-Watcher eine Meldung heraus, um den Anwender über eine Veränderung zu informieren. Damit weiß das Programm nahezu sofort nach einer Dateierstellung, dass eine neue Datei zur Verfügung steht. Dank umgehender Benachrichtigung kann das System weitaus effizienter arbeiten. Denn das Verzeichnis muss nicht ständig auf Änderungen hin abgefragt werden. Damit geht zwischen den einzelnen Verzeichnisabfragen keine Zeit verloren.

Grundlagen des File-System-Watcher

Es gibt ein paar grundsätzliche Eigenschaften und Ereignisse, die vor einer Arbeit mit dem File-System-Watcher bekannt sein sollten. Zweifellos ist die wichtigste Eigenschaft des Objekts EnableRaisingEvents. Dieses Merkmal legt fest, ob das Objekt beim Erhalt einer Änderungsmeldung ein Ereignis auslöst. Steht die Eigenschaft EnableRaisingEvents auf "false", bewirkt das Objekt keine Änderungsereignisse. Bei "true" werden hingegen Ereignisse ausgelöst. Es folgt eine Liste weiterer wichtiger Eigenschaften und Ereignisse, die im Umgang mit dem File-System-Watcher bekannt sein sollten:

Eigenschaften

  • Path bestimmt, welchen Pfad der File-System-Watcher überwachen soll. Der Eintrag "C:\\Temp\\" bedeutet, dass alle Veränderungen in diesem Verzeichnis beobachtet werden.
  • IncludeSubDirectories zeigt an, ob der File-System-Watcher auch Unterverzeichnisse auf Änderungen hin überprüfen soll.
  • Filter ermöglicht es, die Änderungen für gewisse Dateiarten zu filtern. Soll es beispielsweise nur eine Meldung geben, wenn TXT-Dateien verändert, erstellt, oder gelöscht werden, dann lautet der Eintrag "*.txt". Diese Eigenschaft ist sehr praktisch, wenn die Verzeichnisse sehr groß sind oder in den Verzeichnissen viel Datenverkehr anfällt.

Ereignisse

  • Changed wird ausgelöst, sobald eine Datei in dem überprüften Verzeichnis verändert wird. Dazu ein wichtiger Hinweis: Dieses Ereignis kann auch mehrfach stattfinden, selbst wenn der Inhalt der Datei nur ein einziges Mal geändert wurde. Das liegt daran, dass sich andere Dateieigenschaften beim Speichern der Datei ändern.
  • Created wird ausgeführt, sobald eine Datei in dem überprüften Verzeichnis erstellt wird. Wer dieses Ereignis nutzen will, um eine neu erstellte Datei zu verschieben, muss seinen Event-Handler so programmieren, dass es keine Schwierigkeiten gibt, falls die Datei zeitgleich von einem anderen Prozess verwendet wird. Das liegt daran, dass das Created-Ereignis ausgelöst werden kann, bevor der Prozess, der die Datei erstellt hat, diese freigegeben hat. Daher muss der Code im Vorfeld entsprechend angepasst werden.
  • Deleted wird ausgelöst, sobald eine Datei in dem überprüften Verzeichnis gelöscht wird.
  • Renamed wird aktiviert, wenn eine Datei in dem überprüften Verzeichnis umbenannt wird.
Hinweis: Keines dieser Ereignisse wird ausgelöst, wenn die Eigenschaft EnableRaisingEvents nicht auf "true" steht. Sollte der File-System-Watcher irgendwann einmal nicht richtig funktionieren, gilt es also, zuerst die EnableRaisingEvents-Eigenschaft zu überprüfen, um sicherzustellen, dass sie durch "true" aktiviert ist.

Fanden Sie diesen Artikel nützlich?
9 von 11 Lesern fanden diesen Artikel nützlich.

Aktuelle Job-Angebote

ZDNet.de Live

Chrom ...

Chrome for Android -- best mobile browser t.co/...

10.02.12, 22:35 von ZDNet
UL, ...

UL, Drexel University partner to establish research hub t.co/...

10.02.12, 22:15 von ZDNet
wow! ...

wow! ein wirklich schickes Android, das nicht Tablet-Größe hat: t.co/... ... leider nur mäßige technische Daten.

10.02.12, 21:25 von coke4all
Googl ...

Google arbeitet angeblich an Home Entertainment System mit Cloudanbindung t.co/...

10.02.12, 21:10 von zdnet_de
Why ...

Why are young Japanese men losing interest in sex? t.co/...

10.02.12, 20:55 von ZDNet
What ...

What AMD's new roadmap means for users t.co/...

10.02.12, 20:40 von ZDNet
Manch ...

Manchester City is expanding its online reach to Japan t.co/...

10.02.12, 20:35 von ZDNet
Fours ...

Foursquare evolving into one-stop shop with NFC support t.co/...

10.02.12, 20:35 von ZDNet
Websi ...

Website der Gelben Seiten baut Bewertungsfunktionen aus t.co/...

10.02.12, 20:30 von zdnet_de
Motor ...

Motorola: Android-Updates verzögern sich wegen der Hardware-Vielfalt t.co/...

10.02.12, 20:00 von zdnet_de
Aktie ...

Aktienkurse dort wo man sie am liebsten sieht: auf dem Mülleimer! t.co/...

10.02.12, 19:50 von coke4all
Faceb ...

Facebook details Zuckerberg's $500,000 salary, 45% bonus t.co/...

10.02.12, 19:45 von ZDNet
New ...

New Microsoft Office University product comes with tougher verification rules t.co/...

10.02.12, 19:35 von ZDNet
#Prad ...

#Prada Phone by #LG 3.0 ausgepackt und ausprobiert - #smartphone #android t.co/...

10.02.12, 19:30 von cnet_de
Schon ...

Schon im Test: Prada Phone by LG 3.0 mit Android und superhellem Display t.co/...

10.02.12, 19:30 von cnet_de
Beta ...

Beta von Chrome 18 erweitert Hardwarebeschleunigung t.co/...

10.02.12, 19:30 von zdnet_de
Sage ...

Sage helps chocolate business manage seasonality t.co/...

10.02.12, 19:20 von ZDNet
Colum ...

Columbia University excludes Google Docs t.co/...

10.02.12, 19:20 von ZDNet
Benq ...

Benq bringt XGA-Projektor mit 4000 ANSI-Lumen t.co/...

10.02.12, 19:00 von zdnet_de