Java利用WatchService监听文件变化示例
发布时间:2020-05-23 12:11:52 所属栏目:Java 来源:互联网
导读:在实现配置中心的多种方案中,有基于JDK7+的WatchService方法,其在单机应用中还是挺有实践的意义的。
|
在实现配置中心的多种方案中,有基于JDK7+的WatchService方法,其在单机应用中还是挺有实践的意义的。 代码如下:
package com.longge.mytest;
import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardWatchEventKinds;
import java.nio.file.WatchEvent;
import java.nio.file.WatchKey;
import java.nio.file.WatchService;
import java.util.List;
/**
* 测试JDK的WatchService监听文件变化
* @author yangzhilong
*
*/
public class TestWatchService {
public static void main(String[] args) throws IOException {
// 需要监听的文件目录(只能监听目录)
String path = "d:/test";
WatchService watchService = FileSystems.getDefault().newWatchService();
Path p = Paths.get(path);
p.register(watchService,StandardWatchEventKinds.ENTRY_MODIFY,StandardWatchEventKinds.ENTRY_DELETE,StandardWatchEventKinds.ENTRY_CREATE);
Thread thread = new Thread(() -> {
try {
while(true){
WatchKey watchKey = watchService.take();
List<WatchEvent<?>> watchEvents = watchKey.pollEvents();
for(WatchEvent<?> event : watchEvents){
//TODO 根据事件类型采取不同的操作。。。。。。。
System.out.println("["+path+"/"+event.context()+"]文件发生了["+event.kind()+"]事件");
}
watchKey.reset();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
});
thread.setDaemon(false);
thread.start();
// 增加jvm关闭的钩子来关闭监听
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
try {
watchService.close();
} catch (Exception e) {
}
}));
}
}
运行示例结果类似如下: [d:/test/1.txt]文件发生了[ENTRY_MODIFY]事件 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
