public class Watcher {
public static void main(String[] args) throws InterruptedException {
try {
WatchService watcher = FileSystems.getDefault().newWatchService();
Paths.get("xxx").register(watcher,
new WatchEvent.Kind[]{StandardWatchEventKinds.ENTRY_CREATE,
StandardWatchEventKinds.ENTRY_MODIFY,
StandardWatchEventKinds.ENTRY_DELETE},
SensitivityWatchEventModifier.HIGH);
while (true) {
//每隔3秒拉取监听key
WatchKey key = watcher.poll(3, TimeUnit.SECONDS); //等待,超时就返回
//监听key为null,则跳过
if (key == null) {
continue;
}
//获取监听事件
for (WatchEvent<?> event : key.pollEvents()) {
//获取监听事件类型
WatchEvent.Kind<?> kind = event.kind();
Object context = event.context();
System.out.println(context);
String name = kind.name();
System.out.println(name);
do something......
}
//处理监听key后(即处理监听事件后),监听key需要复位,便于下次监听
key.reset();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}