我想看一些目录进行更改及其子目录。我尝试使用WatchService
执行此操作,但我无法知道文件的更改目录。如何从WatchEvent
?
答案 0 :(得分:2)
通常,您在启动watchservice时提供文件的目录名称。这是一个演示如何工作的教程:
http://blogs.oracle.com/thejavatutorials/entry/watching_a_directory_for_changes
从教程:
Path dir = ...;
try {
WatchKey key = dir.register(watcher, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);
}[.....]
当您收到通知时:
//The filename is the context of the event.
WatchEvent<Path> ev = (WatchEvent<Path>)event;
Path filename = ev.context();
Path child = dir.resolve(filename);
答案 1 :(得分:1)
对于使用Spring的用户:
使用Spring 4.2 WatchServiceDirectoryScanner 。现在它还可以捕获子目录更改。