前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >文件监控

文件监控

作者头像
一个架构师
发布2022-06-27 15:23:21
8260
发布2022-06-27 15:23:21
举报

在commons-io中提供了实时监控文件目录文件变化的功能.

整体是按观察者模式设计的,共有三部分: observer, listener, monitor.

监听器 FileAlterationListener: 文件改变时触发的行为.

观察者 FileAlterationObserver: 观察文件的改变, 通知注册的监听器执行相应的事件.

监视器 FileAlterationMonitor: Monitor本身也是Runnable线程, 每间隔一段时间调用一次注册的观察者检查文件.

定义文件或目录监听事件, 包括文件或目录的创建,删除.

代码语言:javascript
复制
public class FileListener extends FileAlterationListenerAdaptor {
  public void onDirectoryCreate(File directory) {
    // do something
  }
  public void onFileCreate(File file) {
    // do something
  }
}

定义观察文件路径和监听间隔, 并启动监控器.

monitor是实现Runnable接口, 也是一个线程, 在调用start()方法后, 启动该线程.

observer中通过checkAndNotify()方法进行比较时, 是通过记录的前次文件夹内容和文件的元数据信息与当前时刻的文件夹内容和文件的元数据信息进行比较. 并通过注册的Listener 反馈给用户.

代码语言:javascript
复制
FileAlterationMonitor monitor = new FileAlterationMonitor(5000);
FileListener listener = new FileListener();
FileAlterationObserver observer = new FileAlterationObserver(new File(path));
observer.addListener(listener);
monitor.addObserver(observer);
monitor.start();

在停止监控时一定要调用stop()方法, 释放线程资源.

代码语言:javascript
复制
monitor.stop();

pom.xml

代码语言:javascript
复制
<dependency>
  <groupId>commons-io</groupId>
  <artifactId>commons-io</artifactId>
  <version>2.6</version>
</dependency>
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从码农的全世界路过 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档