我可以制作多少个新手表服务?
try{
for(Path path : PathList) {
watcher = path.getFileSystem().newWatchService();
} catch (IOException e) {
log.error(e);
}
}
-->结果:IOExeption:打开的文件太多...
我认为您应该只创建一个观察者服务,但注册[m]任何路径。
根据 Oracle docs (https://docs.oracle.com/javase/tutorial/essential/io/walk.html) 给出的示例,只创建了一个监视服务,作为 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);