Java文件实时监控Commons-io
今天看到一网友写的 Java 文件监控,实时监控文件加载 ,突然想到Commons-io中已有此功能的实现,先温习下 写个简单的Demo:
- package wy.util.filemonitor;
- import java.io.File;
- import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;
- import org.apache.commons.io.monitor.FileAlterationObserver;
- import org.apache.log4j.Logger;
- /**
- * 文件变化监听器
- *
- * 在Apache的Commons-IO中有关于文件的监控功能的代码. 文件监控的原理如下:
- * 由文件监控类FileAlterationMonitor中的线程不停的扫描文件观察器FileAlterationObserver,
- * 如果有文件的变化,则根据相关的文件比较器,判断文件时新增,还是删除,还是更改。(默认为1000毫秒执行一次扫描)
- *
- * @author wy
- *
- */
- public class FileListener extends FileAlterationListenerAdaptor {
- private Logger log = Logger.getLogger(FileListener.class);
- /**
- * 文件创建执行
- */
- @Override
- public void onFileCreate(File file) {
- log.info("[新建]:" + file.getAbsolutePath());
- }
- /**
- * 文件创建修改
- */
- @Override
- public void onFileChange(File file) {
- log.info("[修改]:" + file.getAbsolutePath());
- }
- /**
- * 文件删除
- */
- @Override
- public void onFileDelete(File file) {
- log.info("[删除]:" + file.getAbsolutePath());
- }
- /**
- * 目录创建
- */
- @Override
- public void onDirectoryCreate(File directory) {
- log.info("[新建]:" + directory.getAbsolutePath());
- }
- /**
- * 目录修改
- */
- @Override
- public void onDirectoryChange(File directory) {
- log.info("[修改]:" + directory.getAbsolutePath());
- }
- /**
- * 目录删除
- */
- @Override
- public void onDirectoryDelete(File directory) {
- log.info("[删除]:" + directory.getAbsolutePath());
- }
- @Override
- public void onStart(FileAlterationObserver observer) {
- // TODO Auto-generated method stub
- super.onStart(observer);
- }
- @Override
- public void onStop(FileAlterationObserver observer) {
- // TODO Auto-generated method stub
- super.onStop(observer);
- }
- }
- package wy.util.filemonitor;
- import java.util.concurrent.TimeUnit;
- import org.apache.commons.io.filefilter.FileFilterUtils;
- import org.apache.commons.io.monitor.FileAlterationMonitor;
- import org.apache.commons.io.monitor.FileAlterationObserver;
- /**
- * 文件监控测试
- *
- * 在Apache的Commons-IO中有关于文件的监控功能的代码. 文件监控的原理如下:
- * 由文件监控类FileAlterationMonitor中的线程不停的扫描文件观察器FileAlterationObserver,
- * 如果有文件的变化,则根据相关的文件比较器,判断文件时新增,还是删除,还是更改。(默认为1000毫秒执行一次扫描)
- *
- * @author wy
- *
- */
- public class FileMonitorTest {
- /**
- * @param args
- */
- public static void main(String[] args) throws Exception{
- // 监控目录
- String rootDir = "F:\\Resume";
- // 轮询间隔 5 秒
- long interval = TimeUnit.SECONDS.toMillis(5);
- // 创建一个文件观察器用于处理文件的格式
- FileAlterationObserver _observer = new FileAlterationObserver(
- rootDir,
- FileFilterUtils.and(
- FileFilterUtils.fileFileFilter(),
- FileFilterUtils.suffixFileFilter(".txt")), //过滤文件格式
- null);
- FileAlterationObserver observer = new FileAlterationObserver(rootDir);
- observer.addListener(new FileListener()); //设置文件变化监听器
- //创建文件变化监听器
- FileAlterationMonitor monitor = new FileAlterationMonitor(interval, observer);
- // 开始监控
- monitor.start();
- }
- }
看下结果:
==============================================================================
那位网友的帖子:http://www.iteye.com/topic/1127281
还有位网友的帖子:http://dyccsxg.iteye.com/blog/618993
两位的思路都很相似,基本上是采用线程轮询的方式,但在校验文件更新的时候一位采用的文件校验码及hash码,另一位是采用文件的最后修改时间(lastModified()
).
Java文件实时监控Commons-io的更多相关文章
- Java实现文件夹下文件实时监控
一.commons-io方法 1.使用Commons-io的monitor下的相关类可以处理对文件进行监控,它采用的是观察者模式来实现的 (1)可以监控文件夹的创建.删除和修改 (2)可以监控文件的创 ...
- iotop实时监控磁盘io
介绍 Linux下的IO统计工具如iostat, nmon等大多数是只能统计到per设备的读写情况, 如果你想知道每个进程是如何使用IO的就比较麻烦. iotop 是一个用来监视磁盘 I/O 使用状况 ...
- Vmware Vsphere WebService之vijava 开发(二)一性能信息的采集(实时监控)
最近一直没有更新这部分的内容,会利用五一时间完成vcenter这一个系列. 这里先给大家一本关于vijava开发的书,比较实用. 地址:http://pan.baidu.com/s/1gfkl9mj. ...
- Jmeter实时监控+SpringBoot接口性能实战
性能测试 Jmeter实时监控+SpringBoot接口性能实战 自动化 SpringBoot Java Jmeter实时监控+SpringBoot接口性能实战 一.实验目的及实验环境 1.1.实验目 ...
- java利用WatchService实时监控某个目录下的文件变化并按行解析(注:附源代码)
首先说下需求:通过ftp上传约定格式的文件到服务器指定目录下,应用程序能实时监控该目录下文件变化,如果上传的文件格式符合要求,将将按照每一行读取解析再写入到数据库,解析完之后再将文件改名. 一. 一开 ...
- Java (四)APACHE Commons IO 复制文件
上一篇:Java (三)APACHE Commons IO 常规操作 例1:复制文件 1 import java.io.File; 2 import java.io.IOException; 3 4 ...
- java实现文件变化监控
一. spring配置文件:application.xml <?xml version="1.0" encoding="UTF-8"?> <b ...
- Caused by: java.lang.ClassNotFoundException: org.apache.commons.io.FileUtils
1.错误叙述性说明 警告: Could not create JarEntryRevision for [jar:file:/D:/MyEclipse/apache-tomcat-7.0.53/web ...
- IO与文件读写---使用Apache commons IO包提高读写效率
觉得很不错,就转载了, 作者: Paul Lin 首先贴一段Apache commons IO官网上的介绍,来对这个著名的开源包有一个基本的了解:Commons IO is a library of ...
随机推荐
- hdu 4948 Kingdom(推论)
hdu 4948 Kingdom(推论) 传送门 题意: 题目问从一个城市u到一个新的城市v的必要条件是存在 以下两种路径之一 u --> v u --> w -->v 询问任意一种 ...
- UE4 插件扩展引擎工具栏
UE4 作为游戏引擎,已经提供了非常强大的游戏开发的API.作为游戏制作者来讲,我们需要一些专用的功能辅助我们更好的开发游戏,而不是仅仅从构建游戏逻辑出发.因此也就有了扩展编辑器功能的这个想法,还好 ...
- Phong 光照模型(镜面反射)
Phong 光照模型 镜面反射(高光),是光线经过物体表面,反射到视野中,当反射光线与人的眼睛看得方向平行时,强度最大,高光效果最明显,夹角为90度时,强度最小. specular = I*R*V: ...
- 从Hadoop框架讨论大数据
[Hadoop是什么?] 1)Hadoop 是一个由 Apache 基金会所开发的分布式系统基础架构. 2)主要解决,海量数据的存储和海量数据的分析计算问题. 3)广义上来说,HADOOP 通常是指一 ...
- js高级程序设计第八章BOM(未完成,待续)
8.1window对象 BOM的核心对象是window,表示浏览器的一个实例. window对象有双重角色,既可以通过就是访问浏览器窗口的接口,又是ECMAscript规定的Global对象 8. ...
- 解决idea创建ssm项目找不到mybatis的mapper的xml文件问题
http://blog.csdn.net/v19freedom/article/details/69855302 后来上网搜了下,别人给出的答复 idea在build工程的时候 遇到maven项目 使 ...
- Codeforces Round #372 (Div. 2) A .Crazy Computer/B. Complete the Word
Codeforces Round #372 (Div. 2) 不知不觉自己怎么变的这么水了,几百年前做A.B的水平,现在依旧停留在A.B水平.甚至B题还不会做.难道是带着一种功利性的态度患得患失?总共 ...
- [ 浙江大学 程序设计专题 ] 四个专题代码 报告 PPT共享
[原创]转载请注明出处,请勿用于作弊 专题一: 链接: https://pan.baidu.com/s/11xCwvuPHDkTPeOB_yzJWnw 提取码: prup 专题二: 链接: https ...
- C#高级编程第9版 第一章 .NET体系结构 读后笔记
.NET的CLR把源代码编译为IL,然后又把IL编译为平台专用代码. IL总是即时编译的,这一点的理解上虽然明白.当用户操作C#开发的软件时,应该是操作已经编译好的程序.那么此时安装在客户机上的程序是 ...
- hdu - 1565 方格取数(1) && 1569 方格取数(2) (最大点权独立集)
http://acm.hdu.edu.cn/showproblem.php?pid=1565 两道题只是数据范围不同,都是求的最大点权独立集. 我们可以把下标之和为奇数的分成一个集合,把下标之和为偶数 ...