我想监视某个目录及其子目录的变化。我尝试使用WatchService
,但是我无法知道文件是从哪个目录更改的。如何从WatchEvent
中检索完整路径?
我想监视某个目录及其子目录的变化。我尝试使用WatchService
,但是我无法知道文件是从哪个目录更改的。如何从WatchEvent
中检索完整路径?
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);
对于使用Spring的用户:
在Spring 4.2中引入了WatchServiceDirectoryScanner。现在它也可以捕获子目录的更改。
有关更多信息,请参见WatchServiceDirectoryScanner的Javadocs。