2
変更のためのフォルダを監視しようとしています。このフォルダには、私が見たくないサブフォルダが含まれています。残念ながら、WatchServiceはこれらのサブフォルダの変更を通知します。私はこれらのフォルダの最終変更日が更新されるため、これが起こったと思います。WatchService exclude Folders
だから私は彼らをエクスクルードすることを試みた:
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;
}
これはしかし動作しません。結果として生じるコンテキストのパスは相対パスであり、Files.isDirectory()
はディレクトリかファイルかを判断できません。
サブフォルダを除外する方法はありますか?
ありがとうございました。解決が助けになりました。 'path fileName = workPath.resolve(ev.context())' –