WatchService类监控案例

简介: WatchService类监控案例

前言

该类位于java.nio.file包下

最近项目用到了WatchService类(用于监听文件变化),记录一下要点与心得,方便以后查看


监控案例

下面提供的代码是一个监控D盘test文件夹下面的文件变化的案例,包括新增、修改、删除文件

public class TestWatchService {
  public static void main(String[] args) throws IOException {
    //需要监视的文件目录(注意:只能监听目录)
    String path = "d:/test";
    Path p = Paths.get(path);
    //创建监视服务类
    WatchService watchService = FileSystems.getDefault().newWatchService();
    //注册监控服务,监控新增、修改、删除事件,也可以只监控一个事件
    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) {
            //对文件夹中的文件有操作,就会打印下列语句
            System.out.println(event.kind() + "事件:" + path + "/" + event.context());
          }
          watchKey.reset();
        }
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    });
    thread.setDaemon(false);
    thread.start();
    new File("d:/test/a.txt").createNewFile();
    new File("d:/test/a.txt").delete();
    new File("d:/test/test2").mkdir();
    new File("d:/test/test2/123.txt").createNewFile();
  }
}

注意:只能监听test文件夹下面的文件或者文件夹的变化,更深一层的变化不会被监听。

1.在test中的a.txt中修改内容的话,可以被监听到

2.在test2中添加、删除文件,可以被监听到

3.在test2中的123.txt里面修改内容的话,不能被监听到


扩展

Path的register方法中的参数是一个可变参数(三个点),算是java语法糖的一种

具体使用方式参考:JAVA的可变参数,参数中有三个点

参考文献:

使用WatchService类做文件监控总结

利用WatchService实现文件监视

JAVA的可变参数,参数中有三个点

相关文章
|
6月前
|
存储 数据库
Public CMS二次开发过程,如何使用多个数据源
Public CMS二次开发过程,如何使用多个数据源
42 2
|
6月前
|
编译器 C++
【C++】—— c++11新的类功能
【C++】—— c++11新的类功能
|
计算机视觉
挣值管理案例
挣值管理案例。
72 1
|
5月前
|
Java 程序员
JavaSE——面向对象高级二(3/4)-接口(认识接口、接口的好处)以及接口的综合案例(设计班级学生的信息管理模块)
JavaSE——面向对象高级二(3/4)-接口(认识接口、接口的好处)以及接口的综合案例(设计班级学生的信息管理模块)
33 0
|
6月前
|
监控 项目管理
问题管理的方法
问题管理的方法
107 0
问题管理的方法
|
6月前
|
存储
病案管理系统的定义、流程以及应用分析
病案管理是指对病历和相关信息进行系统化管理的过程。病案是医疗机构记录和保存的与患者有关的医疗文件,它包括病人的基本信息、诊疗过程、治疗结果等内容。病案管理通过建立制度化的工作流程和标准化的操作规范,将病人的病历信息进行收集、整理、存储和分析,以便为医务人员提供准确、完整的医疗信息,同时为机构管理者提供数据支持,帮助其进行绩效评估、医疗质量控制和资源分配。
141 0
|
SQL JSON 监控
探索 GreatADM:如何快速定义监控探索 GreatADM:如何快速定义监控
1、默认监控粒度不够,业务需要更细颗粒度的监控数据。 2、平台默认的监控命令不适合,需要调整阈值量身定制监控策略。 3、不同类型的实例或组件需要有不同的监控重点,但管理平台监控固化,难以应对多样化的监控需求。 4、只监控系统关键指标,屏蔽不必要的指标,优化 CPU 消耗、网络、采集数据量等,减少资源消耗,提升系统性能。
75 0
|
运维 Devops C#
【C#编程最佳实践 十七】反射工厂最佳实践
【C#编程最佳实践 十七】反射工厂最佳实践
90 0
|
XML 缓存 前端开发
【解决方案 十一】问题排查方法的思考
【解决方案 十一】问题排查方法的思考
110 0
|
C#
C# 接口案例
C# 接口案例
104 4

相关实验场景

更多
下一篇
无影云桌面