Java 实现对文件系统的监控
2014-06-30 15:27
316 查看
在开发中经常会用到监控文件或是目录的状态,如果你还在手写轮巡扫描文件的话,那你久out了。
commons-logging-1.1.1.jar
log4j-1.2.15.jar
1.2. 在文件监控系统的中,首先要理解几个角色:
Observer:观察者,拥有文件路径、文件过滤器、文件比较器(监控器用它来判断文件的状态变化:新增、修改、删除、等等),可以向他添加相关的监听器;
Listener:监听器,当文件系统发生变化时,将会执行它的相关方法。其实,在文件状态发生变化时,观察者会根据文件比较器来拿到文件的变化状态,根据变化状态的不同来调用监听器中不同的方法;
Monitor:监控器,可设置监控文件系统的时间间隔、文件观察者等信息。
1.3. 代码实现步骤如下:
1.3.1. 实现监听器
1.3.2. 观察者、监控器的调用
1.4. Commons io包中对文件系统监控体系中,还有类org.apache.commons.io.monitor.FileEntry,关于它的具体用法笔者不再一一介绍。
1.5. 参考链接
http://blog.csdn.net/xiaoyezi1001/article/details/28095281
1. Commons io为我们提供了一套可靠、高性能的一套文件系统监控API
1.1. 需要的jar包如下,具体版本可根据自己需要选取:commons-logging-1.1.1.jar
log4j-1.2.15.jar
1.2. 在文件监控系统的中,首先要理解几个角色:
Observer:观察者,拥有文件路径、文件过滤器、文件比较器(监控器用它来判断文件的状态变化:新增、修改、删除、等等),可以向他添加相关的监听器;
Listener:监听器,当文件系统发生变化时,将会执行它的相关方法。其实,在文件状态发生变化时,观察者会根据文件比较器来拿到文件的变化状态,根据变化状态的不同来调用监听器中不同的方法;
Monitor:监控器,可设置监控文件系统的时间间隔、文件观察者等信息。
1.3. 代码实现步骤如下:
1.3.1. 实现监听器
import java.io.File; import org.apache.commons.io.monitor.FileAlterationListenerAdaptor; import org.apache.commons.io.monitor.FileAlterationObserver; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * 文件监听器 * @author leocook(leocook@163.com) * @version 1.0 * @date 2014-06-30 */ public class MyFileListener extends FileAlterationListenerAdaptor { private static Log log = LogFactory.getLog(MyFileListener.class); /** * 目录发生变化 * @param directory 发生变化的目录 */ @Override public void onDirectoryChange(File directory) { super.onDirectoryChange(directory); log.info("文件夹改变:" +directory.getAbsolutePath()); } /** * 新建目录 * @param directory 被新建的目录 */ @Override public void onDirectoryCreate(File directory) { super.onDirectoryCreate(directory); log.info("新建目录:" +directory.getAbsolutePath()); } /** * 删除目录 * @param directory 被删除目录 */ @Override public void onDirectoryDelete(File directory) { super.onDirectoryDelete(directory); log.info("删除目录:" +directory.getAbsolutePath()); } /** * 文件发生变化 * @param file 发生变化的文件 */ @Override public void onFileChange(File file) { super.onFileChange(file); log.info("修改文件:" +file.getAbsolutePath()); } /** * 新建文件 * @param file 被新建的文件 */ @Override public void onFileCreate(File file) { super.onFileCreate(file); log.info("新建文件:"+file.getAbsolutePath()); } /** * 删除文件 * @param file 被删除的文件 */ @Override public void onFileDelete(File file) { super.onFileDelete(file); log.info("删除文件:" +file.getAbsolutePath()); } /** * 检查文件开始 * @param observer 文件观察者 */ @Override public void onStart(FileAlterationObserver observer) { super.onStart(observer); // log.info("开始检查..."); } /** * 检查文件结束 * @param observer 文件观察者 */ @Override public void onStop(FileAlterationObserver observer) { super.onStop(observer); // log.info("结束检查..."); } }
1.3.2. 观察者、监控器的调用
import org.apache.commons.io.monitor.FileAlterationMonitor; import org.apache.commons.io.monitor.FileAlterationObserver; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * 文件系统监测测试类 * @author leocook(leocook@163.com) * @version 1.0 * @date 2014-06-30 */ public class Main { private static Log log = LogFactory.getLog(Main.class); /** * 测试文件系统监测 * @param String[] args */ public static void main(String[] args) { long interval = 1000; final String path = "/home/leocook/test"; FileAlterationObserver observer = null; try { observer = new FileAlterationObserver(path, null, null); //添加监听器 observer.addListener(new MyFileListener()); FileAlterationMonitor monitor = new FileAlterationMonitor(interval, observer); monitor.start(); } catch (Exception e) { log.error("Exception", e); } } }
1.4. Commons io包中对文件系统监控体系中,还有类org.apache.commons.io.monitor.FileEntry,关于它的具体用法笔者不再一一介绍。
1.5. 参考链接
http://blog.csdn.net/xiaoyezi1001/article/details/28095281
相关文章推荐
- Java技巧:java实现文件监控技巧分享
- java实现文件监控
- 访问Hadoop的HDFS文件系统的Java实现
- JAVA实现简易的文件存储系统
- 基于redis ae实现 Linux中的文件系统监控机制(inotify)
- java 实现文件监控
- 基于rsync同步算法的文件同步系统JAVA实现(四)——分析并发送不匹配数据块
- (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
- java如何实现系统监控、系统信息收集、sigar开源API的学习
- java实现文件实时监控:Jnotify和FileAlteration
- java实现文件监控
- 基于rsync同步算法的文件同步系统JAVA实现(二)——校验码的生成
- Java如何实现系统监控、系统信息收集、sigar开源API的学习
- java如何实现系统监控、系统信息收集、sigar开源API的学习
- java实现的简单文件管理系统
- java实现文件监控
- java如何实现在系统资源管理器中选中指定文件/文件夹?
- 基于rsync同步算法的文件同步系统JAVA实现(一)——项目介绍
- 基于rsync同步算法的文件同步系统JAVA实现(一)——项目介绍
- java如何实现系统监控、系统信息收集、sigar开源API的学习