Ich versuche, einen Ordner für Änderungen zu sehen. Dieser Ordner enthält Unterordner, die ich nicht sehen möchte. Leider benachrichtigt mich der WatchService über Änderungen in diesen Unterordnern. Ich schätze das passiert, weil das letzte Änderungsdatum dieser Ordner aktualisiert wird. SoWatchService exclude Ordner
ich versuchte, sie exlude:
WatchService service = FileSystems.getDefault().newWatchService();
workPath.register(watchService, StandardWatchEventKinds.ENTRY_CREATE,
StandardWatchEventKinds.ENTRY_DELETE, StandardWatchEventKinds.ENTRY_MODIFY);
try {
WatchKey watchKey = watchService.take();
for (WatchEvent<?> event : watchKey.pollEvents()) {
@SuppressWarnings("unchecked")
WatchEvent<Path> ev = (WatchEvent<Path>) event;
Path fileName = ev.context();
if (!Files.isDirectory(fileName)) {
logger.log(LogLevel.DEBUG, this.getClass().getSimpleName(),
"Change registered in " + fileName + " directory. Checking configurations.");
/* do stuff */
}
}
if (!watchKey.reset()) {
break;
}
} catch (InterruptedException e) {
return;
}
Dies allerdings nicht funktioniert. Der resultierende Pfad des Kontexts ist relativ und Files.isDirectory()
kann nicht bestimmen, ob es ein Verzeichnis oder eine Datei ist.
Gibt es eine Möglichkeit, die Unterordner auszuschließen?
Vielen Dank. Entschlossenheit half. 'Pfad fileName = workPath.resolve (ev.context())' –