标签:style blog http java color 文件
在开发中经常会用到监控文件或是目录的状态,如果你还在手写轮巡扫描文件的话,那你久out了。
1.1. 需要的jar包如下,具体版本可根据自己需要选取:
1.2. 在文件监控系统的中,首先要理解几个角色:
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. 参考链接
Java 实现对文件系统的监控,布布扣,bubuko.com
标签:style blog http java color 文件
原文地址:http://www.cnblogs.com/leocook/p/java_filesystem_monitor.html