Seit Java 7 gibt es den WatchService zum überwachen von Verzeichnissen auf System-Ebene. Der WatchService übernimmt direkt die Eventaufrufe des Betriebssystems und ist damit vergleichbar mit einem Low-Level-Event.
Damit kann man in ein paar Zeilen Code, zum Beispiel benachrichtigt werden, wenn eine neue Datei im Verzeichnis hinzugefügt wird.
Das wir mit der Konstanten StandardWatchEventKinds.ENTRY_CREATE angegeben. Es gib aber auch noch welche fürs löschen oder verändern. Die Konstanten können dann auch verknüpft werden.
Für die Verwendung muss das Package java.nio.file.* importiert werden. Hier der Beispiel Code, der das „input“ Verzeichnis des Users überwacht, der auch auf einem Raspberry Pi läuft 😉
String rootVerzeichnis = System.getProperty("user.dir");
Path inputPath = Paths.get(rootVerzeichnis, "input");
WatchService watchService = FileSystems.getDefault().newWatchService();
inputPath.register(watchService, StandardWatchEventKinds.ENTRY_CREATE);
WatchKey key;
while ((key = watchService.take()) != null) {
for (WatchEvent event : key.pollEvents()) {
String neueDatei = event.context().toString();
// neueDatei enthält den Dateinamen der zugfügten Datei
}
key.reset();
}
Ähnliche Artikel:
- Java Rätsel des Monats
- Java 7 ist DA!
- Quick-Howto für die Coole Java Template-Erstellung (JaMoPP) mit CommentTemplate ldt. JavaMagazin 1-2013
