【发布时间】:2011-04-09 22:04:04
【问题描述】:
我想查看一些目录的变化和她的子目录。我尝试使用WatchService 执行此操作,但我不知道文件是从哪个目录更改的。如何从WatchEvent 检索完整路径?
【问题讨论】:
标签: java watchservice
我想查看一些目录的变化和她的子目录。我尝试使用WatchService 执行此操作,但我不知道文件是从哪个目录更改的。如何从WatchEvent 检索完整路径?
【问题讨论】:
标签: java watchservice
通常你在启动 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);
【讨论】:
对于使用 Spring 的用户:
在 Spring 4.2 中引入了 WatchServiceDirectoryScanner。现在它还可以捕捉子目录的变化。
【讨论】: