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

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.

Page: 1 2

ZDNet.de Redaktion

Recent Posts

Gefahren im Foxit PDF-Reader

Check Point warnt vor offener Schwachstelle, die derzeit von Hackern für Phishing ausgenutzt wird.

2 Tagen ago

Bitdefender entdeckt Sicherheitslücken in Überwachungskameras

Video-Babyphones sind ebenfalls betroffen. Cyberkriminelle nehmen vermehrt IoT-Hardware ins Visier.

2 Tagen ago

Top-Malware in Deutschland: CloudEye zurück an der Spitze

Der Downloader hat hierzulande im April einen Anteil von 18,58 Prozent. Im Bereich Ransomware ist…

2 Tagen ago

Podcast: „Die Zero Trust-Architektur ist gekommen, um zu bleiben“

Unternehmen greifen von überall aus auf die Cloud und Applikationen zu. Dementsprechend reicht das Burg-Prinzip…

2 Tagen ago

Google schließt weitere Zero-Day-Lücke in Chrome

Hacker nutzen eine jetzt gepatchte Schwachstelle im Google-Browser bereits aktiv aus. Die neue Chrome-Version stopft…

2 Tagen ago

Hacker greifen Zero-Day-Lücke in Windows mit Banking-Trojaner QakBot an

Microsoft bietet seit Anfang der Woche einen Patch für die Lücke. Kaspersky-Forscher gehen davon aus,…

2 Tagen ago