Ich verwende watchKey
, um auf eine Dateiänderung in einem bestimmten Ordner zu warten.Unterordner mit einem Java-Überwachungsdienst überwachen
Path _directotyToWatch = Paths.get("E:/Raja");
WatchService watcherSvc = FileSystems.getDefault().newWatchService();
WatchKey watchKey = _directotyToWatch.register(watcherSvc, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);
while (true) {
watchKey=watcherSvc.take();
for (WatchEvent<?> event: watchKey.pollEvents()) {
WatchEvent<Path> watchEvent = castEvent(event);
System.out.println(event.kind().name().toString() + " " + _directotyToWatch.resolve(watchEvent.context()));
watchKey.reset();
}
}
Es funktioniert gut für mich. Wenn ich eine Datei im Raja-Ordner ändere gibt es den Dateinamen mit Pfad. Aber wenn ich einige Dateien in Unterordner wie "E:/Raja/Test" setze, gibt es mir nur den Pfad, wo ich es einfüge, nicht den Dateinamen.
Wie erhält man den Dateinamen?
Dies ist ein Duplikat von http://stackoverflow.com/questions/5608234/how-can-i-watch-subdirectory-for-changes-with-watch-service-java –