我可以制作多少个newWatchService?
try{
for(Path path : PathList) {
watcher = path.getFileSystem().newWatchService();
} catch (IOException e) {
log.error(e);
}
}
- >结果:IOExeption:打开文件太多了......
答案 0 :(得分:0)
我认为你应该只创建一个观察者服务,但注册[m]任何路径。
根据Oracle docs(the document)给出的示例,只创建了一个监视服务,作为WatchDir类的成员变量。注意" this.watcher"
public class WatchDir {
private final WatchService watcher;
班上其他地方......
/**
* Creates a WatchService and registers the given directory
*/
WatchDir(Path dir, boolean recursive) throws IOException {
this.watcher = FileSystems.getDefault().newWatchService();
相同的服务用于递归地注册给定文件夹中的所有路径。
最后,注册发生在这里......
/**
* Register the given directory with the WatchService
*/
private void register(Path dir) throws IOException {
WatchKey key = dir.register(watcher, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);