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.

Neueste Kommentare 

Noch keine Kommentare zu Verzeichnisse überwachen: Der File-System-Watcher spart Zeit

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *