spring boot +commons-io实现文件监控
来源:互联网 发布:朗读配音软件 编辑:程序博客网 时间:2024/05/21 22:51
1、pom文件
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.sun</groupId> <artifactId>cui-monitor</artifactId> <version>1.0-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.2.7.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.6</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> </dependency> </dependencies></project>
2、FileListener
package cn.sunline.Listener;import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;import org.apache.commons.io.monitor.FileAlterationObserver;import org.apache.log4j.Logger;import java.io.*;/** * Created by Rick on 2017/12/18. * * 文件变化监听器 * * 在Apache的Commons-IO中有关于文件的监控功能的代码. 文件监控的原理如下: * 由文件监控类FileAlterationMonitor中的线程不停的扫描文件观察器FileAlterationObserver, * 如果有文件的变化,则根据相关的文件比较器,判断文件时新增,还是删除,还是更改。(默认为1000毫秒执行一次扫描) * * */public class FileListener extends FileAlterationListenerAdaptor { private Logger log = Logger.getLogger(FileListener.class); /** * 文件创建执行 */ public void onFileCreate(File file) { log.info("[新建]:" + file.getAbsolutePath()); } /** * 文件创建修改 */ public void onFileChange(File file) { log.info("[修改]:" + file.getAbsolutePath()); BufferedReader buf = null; try { buf = new BufferedReader(new InputStreamReader(new FileInputStream(file),"GBK")); BufferedReader br = new BufferedReader(buf); String line = null; System.out.println(br.readLine()); } catch (IOException e) { e.printStackTrace(); } finally { // 这里释放系统 IO 资源 try {if (buf != null){buf.close();}}catch (Exception e){} } } /** * 文件删除 */ public void onFileDelete(File file) { log.info("[删除]:" + file.getAbsolutePath()); } /** * 目录创建 */ public void onDirectoryCreate(File directory) { log.info("[新建]:" + directory.getAbsolutePath()); } /** * 目录修改 */ public void onDirectoryChange(File directory) { log.info("[修改]:" + directory.getAbsolutePath()); } /** * 目录删除 */ public void onDirectoryDelete(File directory) { log.info("[删除]:" + directory.getAbsolutePath()); } public void onStart(FileAlterationObserver observer) { // TODO Auto-generated method stub super.onStart(observer); } public void onStop(FileAlterationObserver observer) { // TODO Auto-generated method stub super.onStop(observer); }}
3、启动类
package cn.sunline;import cn.sunline.Listener.FileListener;import cn.sunline.controller.SampleController;import org.apache.commons.io.filefilter.FileFilterUtils;import org.apache.commons.io.filefilter.HiddenFileFilter;import org.apache.commons.io.filefilter.IOFileFilter;import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;import org.apache.commons.io.monitor.FileAlterationMonitor;import org.apache.commons.io.monitor.FileAlterationObserver;import org.apache.log4j.Logger;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.context.annotation.ComponentScan;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import java.io.*;import java.util.concurrent.TimeUnit;/** * Created by Rick on 2017/12/18. 自定义监控器 */@EnableAutoConfigurationpublic class AppServer{ final static Logger logger = Logger.getLogger(AppServer.class); public static void main(String[] args) throws Exception { SpringApplication.run(AppServer.class, args); System.out.println("*********************************启动成功*********************************"); // 监控目录 String rootDir = "D:\\test"; // 轮询间隔 5 秒 long interval = TimeUnit.SECONDS.toMillis(1); // 创建过滤器 IOFileFilter directories = FileFilterUtils.and( FileFilterUtils.directoryFileFilter(), HiddenFileFilter.VISIBLE); IOFileFilter files = FileFilterUtils.and( FileFilterUtils.fileFileFilter(), FileFilterUtils.suffixFileFilter(".txt")); IOFileFilter filter = FileFilterUtils.or(directories, files); // 使用过滤器 FileAlterationObserver observer = new FileAlterationObserver(new File(rootDir), filter); //FileAlterationObserver observer = new FileAlterationObserver(new File(rootDir)); observer.addListener(new FileListener()); //创建文件变化监听器 FileAlterationMonitor monitor = new FileAlterationMonitor(interval, observer); // 开始监控 try{ monitor.start(); System.out.println("***************监控中***************"); } catch (Exception e){ logger.error("异常处理",e); } }}
4、运行效果
阅读全文
0 0
- spring boot +commons-io实现文件监控
- 工具类commons-io的文件监控
- Java 文件监控,实时监控文件加载之Commons-io
- Java 文件监控,实时监控文件加载之Commons-io
- 利用commons-fileupload 实现文件上传终极版及commons-fileupload和commons-io包关系
- 利用commons-fileupload 实现文件上传终极版及commons-fileupload和commons-io包关系
- 利用commons-fileupload 实现文件上传终极版及commons-fileupload和commons-io包关系
- commons io上传文件
- Spring Boot实现文件上传
- spring-boot 性能监控
- commons-io.jar实现文件的拷贝并且命名
- 使用commons-io-2.0 API来实现监听文件变化
- 工具类commons-io的Tailer用法,用来监控文件内容的变化情况
- 如何做实时监控?—— 参考 Spring Boot 实现
- 如何做实时监控?—— 参考 Spring Boot 实现
- 如何做实时监控?—— 参考 Spring Boot 实现
- spring-boot-admin源码分析及单机监控spring-boot-monitor的实现(一)
- spring-boot-admin源码分析及单机监控spring-boot-monitor的实现(二)
- JAVA 的特点:
- 前端开发知识体系汇总
- 十二月 19, 2017 8:45:03 上午 org.apache.catalina.core.StandardContext listenerStart 严重: Exception sending
- JVM
- 西安工业云上线,工业云平台搭建有哪些真金白银?
- spring boot +commons-io实现文件监控
- Oracle第二财季业绩表现抢眼 | 搜狗推出“唇语识别”技术 | FF宣布完成超10亿美元A轮融资
- 补12.18日(网站上不去)
- Ubuntu 下如何卸载各类软件
- 解决win10什么也没做,但是一直占网速的问题
- less简要入门——变量
- 七月机器学习实战班培训视频教程22课高清长课时附ppt
- 编写第一个 Java 程序:
- BareTailProfessional实时刷新日志