我想观察一些目录的变化和她的子目录。我试着用WatchService
这样做,但我不知道文件是从哪个目录更改的。如何从WatchEvent
检索完整路径?
通常在启动watchservice时提供文件的目录名。下面是演示如何工作的教程:
http://blogs.oracle.com/thejavatutorials/entry/watching_a_directory_for_changesFrom the tutorial:
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。现在它还可以捕获子目录的更改。
更多信息,Javadocs on WatchServiceDirectoryScanner