Java 如何在一个WatchService中注册多个文件夹
有人能告诉我如何在一个watchservice中注册多个文件夹路径吗? 对于多个文件夹,一个WatchService哪个更好(速度)?还是为一个文件夹路径提供一个WatchService?多个文件夹最多可以有12个 来自Java教程(): 以下是实现watch服务所需的基本步骤:Java 如何在一个WatchService中注册多个文件夹,java,multithreading,concurrency,Java,Multithreading,Concurrency,有人能告诉我如何在一个watchservice中注册多个文件夹路径吗? 对于多个文件夹,一个WatchService哪个更好(速度)?还是为一个文件夹路径提供一个WatchService?多个文件夹最多可以有12个 来自Java教程(): 以下是实现watch服务所需的基本步骤: 为文件系统创建一个WatchService“watcher” 对于要监视的每个目录,请向watcher注册它。注册目录时,请指定要通知的事件类型。对于您注册的每个目录,您都会收到一个WatchKey实例 实现无限循环
- 为文件系统创建一个WatchService“watcher”
- 对于要监视的每个目录,请向watcher注册它。注册目录时,请指定要通知的事件类型。对于您注册的每个目录,您都会收到一个WatchKey实例
- 实现无限循环以等待传入事件。当一个事件发生时,密钥会被发送信号并放入观察者的队列中
- 从观察者队列中检索密钥。您可以从密钥获取文件名
- 检索密钥的每个挂起事件(可能有多个事件)并根据需要进行处理
- 重置键,然后继续等待事件
- 关闭服务:当线程退出或关闭(通过调用其closed方法)时,watch服务退出
WatchService watcher = FileSystems.getDefault().newWatchService();
// Repeat the following code to get a WatchKey for each folder
try {
Path dir = FileSystems.getDefault().getPath("logs", "access.log");
WatchKey key = dir.register(watcher,
ENTRY_CREATE,
ENTRY_DELETE,
ENTRY_MODIFY);
}
catch (IOException x) {
System.err.println(x);
}
你能不能给我一个代码提示,只用于在watch服务中注册多个路径的部分?其余的我都知道。谢谢你的解释!编辑答案。有用的东西发生在行目录寄存器(watcher,…)上;