Überwachung von Änderungen in einem Verzeichnis
Auszug aus diesem Lernprogramm :
Erstellen eines Überwachungsdienstes und Registrierung für Ereignisse
Der erste Schritt besteht darin, einen neuen WatchService zu erstellen, indem Sie die Methode newWatchService in der Klasse FileSystem wie folgt verwenden:
WatchService watcher = FileSystems.getDefault().newWatchService();
Als Nächstes registrieren Sie ein oder mehrere Objekte mit dem Überwachungsdienst. Jedes Objekt, das die Schnittstelle Watchable implementiert, kann registriert werden. Die Path-Klasse implementiert die Watchable-Schnittstelle, so dass jedes zu überwachende Verzeichnis als Path-Objekt registriert wird.
Wie bei jedem Watchable implementiert die Klasse Path zwei Registrierungsmethoden. Diese Seite verwendet die Version mit zwei Argumenten, register(WatchService, WatchEvent.Kind...). (Die Version mit drei Argumenten benötigt einen WatchEvent.Modifier, der derzeit nicht implementiert ist).
Bei der Registrierung eines Objekts mit dem Überwachungsdienst geben Sie die Arten von Ereignissen an, die Sie überwachen möchten. Es folgen die unterstützten StandardWatchEventKinds-Ereignistypen:
ENTRY_CREATE – A directory entry is created.
ENTRY_DELETE – A directory entry is deleted.
ENTRY_MODIFY – A directory entry is modified.
OVERFLOW – Indicates that events might have been lost or discarded. You do not have to register for the OVERFLOW event to receive it.
Das folgende Codeschnipsel zeigt, wie man eine Pfadinstanz für alle drei Ereignistypen registriert:
import static java.nio.file.StandardWatchEventKinds.*;
Path dir = ...;
try {
WatchKey key = dir.register(watcher,
ENTRY_CREATE,
ENTRY_DELETE,
ENTRY_MODIFY);
} catch (IOException x) {
System.err.println(x);