2
我試圖監視更改的文件夾。此文件夾包含我不想看的子文件夾。不幸的是,WatchService通知這些子文件夾的改變了我。我想這是因爲這些文件夾更新的最後更改日期。WatchService排除的文件夾
於是,我就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;
}
這不工作,雖然。上下文的結果路徑是相對的,並且Files.isDirectory()
無法確定它是目錄還是文件。
有沒有辦法排除子文件夾?
謝謝。解決幫助。 'Path fileName = workPath.resolve(ev.context())' –