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 ...
随机推荐
- eclipse之版本代号
- [Python3网络爬虫开发实战] 1.4.3-Redis的安装
Redis是一个基于内存的高效的非关系型数据库,本节中我们来了解一下它在各个平台的安装过程. 1. 相关链接 官方网站:https://redis.io 官方文档:https://redis.io/d ...
- 零基础入门学习Python(36)--类和对象:给大家介绍对象
知识点 Python3 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前 ...
- Yahoo前端优化的35条军规
摘要:无论是在工作中,还是在面试中,web前端性能的优化都是很重要的,那么我们进行优化需要从哪些方面入手呢?可以遵循雅虎的前端优化34条军规,不过现在已经是35条了,所以可以说是雅虎前端优化的35条军 ...
- table中JS选取行列
<table border="1" align="center" style="width: 500px" id="doct ...
- .DS_Store的说明
今天清理电脑时,突然发现好像有文件的地方都会出现一个.DS_Store文件,今天有时间,索性就查了一下,并做总结发表一篇吧,怕有什么影响,并未真正实施,仅仅供自己收藏,仅供大家参考. DS_ ...
- java读utf8 的txt文件,第一个字符为空或问号问题
参考:https://blog.csdn.net/yangzhichao888/article/details/79529756 https://blog.csdn.net/wangzhi291/ar ...
- 開啟活動監視器 (SQL Server Management Studio)
本主題描述如何開啟 [活動監視器] 來取得有關 SQL Server 處理序以及這些處理序如何影響目前 SQL Server 執行個體的資訊. 此外,本主題也描述如何設定 [活動監視器] 的重新整理間 ...
- HDU 2280 状压DP
用dfs找到状态的最优解 且那个正方形块可以由两个水平块组成,所以无需考虑 #include <cstdio> #include <cstring> #include < ...
- [luoguP1056] 排座椅(sort + 模拟)
传送门 nc题,一直sort就过了 代码 #include <cstdio> #include <iostream> #include <algorithm> #d ...