使用common-io包

<dependency>

<groupId>commons-io</groupId>

<artifactId>commons-io</artifactId>

<version>2.6</version>

</dependency>

1.创建实现了FileAlterationListenerAdaptor的监听器

package com.holidaylee.listener;import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;
import org.apache.commons.io.monitor.FileAlterationObserver;
import org.springframework.stereotype.Component;import java.io.File;@Component
public class FileListenerExample extends FileAlterationListenerAdaptor {@Overridepublic void onStart(FileAlterationObserver observer) {System.out.println("观察文件变化任务开始");}@Overridepublic void onDirectoryCreate(File directory) {System.out.println("创建文件夹" + directory);}@Overridepublic void onDirectoryChange(File directory) {System.out.println("修改文件夹" + directory);}@Overridepublic void onDirectoryDelete(File directory) {System.out.println("删除文件夹" + directory);}@Overridepublic void onFileCreate(File file) {System.out.println("创建文件" + file);}@Overridepublic void onFileChange(File file) {System.out.println("修改文件" + file);}@Overridepublic void onFileDelete(File file) {System.out.println("删除文件" + file);}@Overridepublic void onStop(FileAlterationObserver observer) {System.out.println("观察文件变化任务结束");}
}

2.添加获取指定目录指定文件观察者的工具类

package com.holidaylee.util;import com.holidaylee.listener.FileListenerExample;
import org.apache.commons.io.filefilter.FileFilterUtils;
import org.apache.commons.io.filefilter.IOFileFilter;
import org.apache.commons.io.monitor.FileAlterationMonitor;
import org.apache.commons.io.monitor.FileAlterationObserver;
import org.springframework.stereotype.Component;import javax.annotation.Resource;
import java.io.File;
import java.util.concurrent.TimeUnit;@Component
public class FileListenerMonitorUtils {@Resourceprivate FileListenerExample  fileListenerExample ;/*** 生成monitor,一intervalSeconds监听directory文件夹下面的以suffix结束,prefix开头的文件** @param directory       监视的文件夹* @param intervalSeconds 轮训时间* @param suffix          监视文件的后缀* @param prefix          监视文件的前缀* @return 文件观察者*/public FileAlterationMonitor getMonitor(File directory, Long intervalSeconds, String prefix, String suffix) {long interval = TimeUnit.SECONDS.toMillis(intervalSeconds);IOFileFilter directories = FileFilterUtils.and(FileFilterUtils.directoryFileFilter());IOFileFilter suffixFilter = FileFilterUtils.suffixFileFilter(suffix);IOFileFilter prefixFilter = FileFilterUtils.prefixFileFilter(prefix);IOFileFilter files = FileFilterUtils.and(FileFilterUtils.fileFileFilter(),suffixFilter, prefixFilter);IOFileFilter filter = FileFilterUtils.or(directories, files);FileAlterationObserver observer = new FileAlterationObserver(directory, filter);observer.addListener(fileListenerExample);FileAlterationMonitor monitor = new FileAlterationMonitor(interval, observer);return monitor;}
}

3.为指定文件夹下面的指定文件注册并开启观察者服务

package com.holidaylee.config;import com.holidaylee.util.FileListenerMonitorUtils ;
import org.apache.commons.io.monitor.FileAlterationMonitor;
import org.springframework.stereotype.Component;import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.io.File;@Component
public class FileMonitorRegisterConfig {@Resourceprivate FileListenerMonitorUtils fileListenerMonitorUtils ;@PostConstructprivate void register() {File directory = new File("/app/test");if (!directory.exists()) {throw new NullPointerException("目录不存在启动文件观察者失败:" + directory);}Long intervalSeconds = 5L;String prefix = "test_";String suffix = ".json";try {// 为指定文件夹下面的指定文件注册文件观察者FileAlterationMonitor monitor = fileListenerMonitorUtils.getMonitor(directory, intervalSeconds, prefix, suffix);// 启动观察者monitor.start();} catch (Exception e) {e.printStackTrace();}}
}

注明:

本文为学习记录笔记,不喜勿喷。

springboot使用FileAlterationMonitor完成对指定文件夹下面指定文件的动态监控相关推荐

  1. R语言使用fs包的dir_create函数在指定路径下创建新的文件夹、使用file_create函数在指定文件夹下创建文件

    R语言使用fs包的dir_create函数在指定路径下创建新的文件夹.使用file_create函数在指定文件夹下创建文件 目录

  2. Java删除指定文件夹下的文件和目录

    Java删除指定文件夹下的文件和目录 import java.io.File;public class TestFile {public static void main(String[] args) ...

  3. C#获取文件夹下指定格式的所有文件

    C#获取文件夹下指定格式的所有文件的方法,虽然很简单,但还是分享一下吧,用到时可以稍加修改和优化就可以使用. 获取指定目录下所有文件 //最要使用 System.IO.Directory.GetFil ...

  4. [云炬Python学习笔记] Python读取指定文件夹下的文件

    1 # -*- coding: utf-8 -*-2 import csv3 import os4 import pandas as pd5 #提取文件夹下的地址+文件名,源文件设定排序规则6 def ...

  5. C# 读取指定文件夹下所有文件

    #region 读取文件 //返回指定目录中的文件的名称(绝对路径)string[] files = System.IO.Directory.GetFiles(@"D:\Test" ...

  6. python 实现统计ftp服务器指定目录下文件夹数目、文件数目及所有文件大小 本次主要为满足应用方核对上传到ftp服务器的文件是否缺漏。 主要要求:指定目录下,文件夹数目/文件数目/所有文件大小

    python 实现统计ftp服务器指定目录下文件夹数目.文件数目及所有文件大小 本次主要为满足应用方核对上传到ftp服务器的文件是否缺漏. 主要要求:指定目录下,文件夹数目/文件数目/所有文件大小,类 ...

  7. php遍历文件夹下文件内容_PHP递归遍历指定文件夹内的文件实现方法

    今天早上在地铁上看了关于文件和文件夹的一章,正好最近刚搞懂linux的文件系统,觉得对文件属性的访问跟Shell命令很像,所以想晚上来实践一下. 发现php的文件夹函数好像没有提供遍历文件夹下的所有文 ...

  8. bat递归查找指定文件_批处理脚本遍历指定文件夹下的文件

    批处理脚本 1. 遍历指定文件夹下的文件 1.1 命令解释 命令: for [参数] %%变量名 in (匹配符) do (执行的命令) 切记:每个指令之间必须以空格隔开,in 与 ( 之间有空格,d ...

  9. VB得到指定文件夹下的文件列表

    代码如下: Function GetFileList(ByVal Path As String, ByRef FileName() As String, Optional fExp As String ...

  10. python获取文件夹下指定后缀名文件列表(可手工设定是否遍历子文件夹)cmd复制文件命令使用

    打算写一个替换文件的程序,该文件可能在不同文件夹路径,使用python操作肯定最方便,特此简单整理封装了两个python函数和一个cmd复制文件的命令方法,供自己翻阅或来者参考 辉 2022.8.9. ...

最新文章

  1. 【Android 应用开发】对Android体系结构的理解--后续会补充
  2. IntelliJ IDEA 的 Build Project/Build Module/构建项目/构建模块
  3. 去掉input密码框自动补全功能
  4. mysql架构深入_mysql性能优化2:深入认识mysql体系架构
  5. HbuliderX 历史版本下载
  6. 三步搞定android应用底部导航栏
  7. 这年头,千万不要花钱创业
  8. C++11在加入<thread>头文件后Socket服务器接收不到消息
  9. python3.6安装pyspider
  10. WES7创建系统恢复盘
  11. 2022钉钉杯A题思路及代码:银行卡电信诈骗危险预测
  12. 定义Student类,该类中有Sting name和int age两个属性,该类实现Comparable接口,实现根据学生姓名和年龄排序,该类重写toString()输出学生的姓名和年龄。
  13. PCB表面贴片元件的手工焊接技巧
  14. python人民币小写转大写_python人民币小写转大写辅助工具
  15. Vue, App与我(十三)
  16. mysql 主键 默认索引_mysql 主键和默认 设为索引的规则
  17. C++方式实现人民币小写转大写
  18. JAVA开发方向和就业方向
  19. php从气象局获取天气预报并保存到服务器
  20. 【Java面试题】List如何一边遍历,一边删除?

热门文章

  1. 亲爱的,60句感人歌词,有没有一句触动了你
  2. 2022年第十七届研电赛报名|安谋科技(Arm China)命题:基于特定开发平台的理性智能体设计
  3. PHP获取Opcode及C源码
  4. 部署ServletContext的时候报错 Class com.xxxxx.ContextServlet is not a Servlet
  5. 服务器开通网站来宾帐户,IIS 增加Internet来宾用户权限
  6. 网络空间安全基础(待续)
  7. Feature Selective Anchor-Free(FSAF)
  8. ICS文件说明和创建(以Outlook为例)
  9. lisp边长注记_小程序cad批量注记建筑物边长
  10. python 编写的 pdf 裁剪工具 删除空白页