Java 文件监听与热更新机制封装
Java 文件监听与热更新机制封装
在许多 Java 应用场景中,我们需要实时监控某个目录下的文件变化,并触发对应的业务处理——例如配置文件热加载、插件目录更新、日志文件监控等。Java NIO 提供的 WatchService
正好满足这一需求。本文将介绍如何:
- 封装通用的目录监听器
- 将监听逻辑与业务回调解耦
- 在实际项目中快速集成并扩展
一、核心概念与组件
- WatchService:Java NIO 中的文件监听服务,用于注册对目录注册并接收文件事件。
- WatchEvent.Kind:文件事件类型,包括
ENTRY_CREATE
(创建)、ENTRY_MODIFY
(修改)、ENTRY_DELETE
(删除)。 - WatchKey:监听器接收到事件后的句柄,可用于检索事件并重设监听状态。
- 回调接口:用户自定义的处理逻辑,定义在监听器回调方法中。
二、通用目录监听器实现
public class DirectoryWatcher implements Runnable {private final Path watchDir;private final WatchService watchService;private final FileChangeHandler handler;public DirectoryWatcher(Path dir, FileChangeHandler handler) throws IOException {this.watchDir = dir;this.handler = handler;this.watchService = FileSystems.getDefault().newWatchService();register();}private void register() throws IOEx