实时监控文件夹及文件的变化
2017-06-21 11:00
225 查看
点击下载commons io
测试代码一
package com.jdy.test; 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.FileAlterationListener; import org.apache.commons.io.monitor.FileAlterationMonitor; import org.apache.commons.io.monitor.FileAlterationObserver; import com.jdy.listener.FileAlterationListenerImpl; public class FileTest { public static void main(String[] args) { // 创建文件监听器 FileAlterationListener listener = new FileAlterationListenerImpl(); // 创建文件过滤器 IOFileFilter directories = FileFilterUtils.and( FileFilterUtils.directoryFileFilter(), HiddenFileFilter.VISIBLE); IOFileFilter files = FileFilterUtils.and( FileFilterUtils.fileFileFilter(), FileFilterUtils.suffixFileFilter(".txt")); IOFileFilter fileFilter = FileFilterUtils.or(directories, files); // 创建文件观察器 String directory = "D:/folder"; FileAlterationObserver observer = new FileAlterationObserver(directory, fileFilter); observer.addListener(listener); // 创建文件监控器 long interval = 1000l; FileAlterationMonitor monitor = new FileAlterationMonitor(interval); monitor.addObserver(observer); try { monitor.start(); } catch (Exception e) { e.printStackTrace(); } //主线程循环打印100次 for (int i = 0; i < 100; i++) { System.out.println(Thread.currentThread().getName() + " --> "+ i); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }
测试代码二
package com.jdy.test; import java.io.FileFilter; import org.apache.commons.io.monitor.FileAlterationListener; import org.apache.commons.io.monitor.FileAlterationMonitor; import org.apache.commons.io.monitor.FileAlterationObserver; import com.jdy.filter.FileFilterImpl; import com.jdy.listener.FileAlterationListenerImpl; public class FileTest2 { public static void main(String[] args) { // 创建文件监听器 FileAlterationListener listener = new FileAlterationListenerImpl(); // 创建文件观察器 String directory = "D:/folder"; FileFilter fileFilter = new FileFilterImpl(); FileAlterationObserver observer = new FileAlterationObserver(directory, fileFilter); observer.addListener(listener); // 创建文件监控器 long interval = 1000l; FileAlterationMonitor monitor = new FileAlterationMonitor(interval); monitor.addObserver(observer); try { monitor.start(); } catch (Exception e) { e.printStackTrace(); } //主线程循环打印100次 for (int i = 0; i < 100; i++) { System.out.println(Thread.currentThread().getName() + " --> "+ i); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }
自定义监听器
package com.jdy.listener; import java.io.File; import org.apache.commons.io.monitor.FileAlterationListenerAdaptor; import org.apache.commons.io.monitor.FileAlterationObserver; public class FileAlterationListenerImpl extends FileAlterationListenerAdaptor { @Override public void onDirectoryChange(File directory) { System.out.println(directory.getName() + " ---> onDirectoryChange"); super.onDirectoryChange(directory); } @Override public void onDirectoryCreate(File directory) { System.out.println(directory.getName() + " ---> onDirectoryCreate"); super.onDirectoryCreate(directory); } @Override public void onDirectoryDelete(File directory) { System.out.println(directory.getName() + " ---> onDirectoryDelete"); super.onDirectoryDelete(directory); } @Override public void onFileChange(File file) { System.out.println(file.getName() + " ---> onFileChange"); super.onFileChange(file); } @Override public void onFileCreate(File file) { System.out.println(file.getName() + " ---> onFileCreate"); super.onFileCreate(file); } @Override public void onFileDelete(File file) { System.out.println(file.getName() + " ---> onFileDelete"); super.onFileDelete(file); } @Override public void onStart(FileAlterationObserver observer) { System.out.println(observer.getDirectory().getAbsolutePath() + " ---> onStart"); super.onStart(observer); } @Override public void onStop(FileAlterationObserver observer) { System.out.println(observer.getDirectory().getAbsolutePath() + " ---> onStop"); super.onStop(observer); } }
自定义过滤器
package com.jdy.filter; import java.io.File; import org.apache.commons.io.filefilter.FileFileFilter; public class FileFilterImpl extends FileFileFilter { private static final long serialVersionUID = 1L; @Override public boolean accept(File file) { System.out.println(file.getName() + "accept"); return super.accept(file); } }
打印结果
main --> 0 D:\folder ---> onStart D:\folder ---> onStop main --> 1 D:\folder ---> onStart D:\folder ---> onStop main --> 2 D:\folder ---> onStart D:\folder ---> onStop main --> 3 D:\folder ---> onStart 11.txt ---> onFileCreate 22.txt ---> onFileCreate 33.txt ---> onFileCreate D:\folder ---> onStop main --> 4
相关文章推荐
- Storm监控文件夹变化 统计文件单词数量
- C#实现实时监控文件目录下的变化
- java读取系统Properties配置文件利用线程实时监控配置文件变化
- java读取系统Properties配置文件利用线程实时监控配置文件变化
- JAVA实时监控目录下文件的变化
- Spark Streaming之:Flume监控目录下文件内容变化,然后Spark Streaming实时监听Flume,然后从其上拉取数据,并计算出结果
- C#实现实时监控文件目录下的变化
- iOS监控/监测/监听文件/文件夹的变化 检测文件变化
- 自定义注解:通过监控文件的变化,实时更改工厂管理的实例
- 自定义注解:通过监控文件的变化,实时更改工厂管理的实例
- java实时监测文件夹的变化,允许多用户同时访问,完成文件转移
- Flume的使用之二——实时监控文件的数据变化并发送到工作台
- linux 系统监控某目录下文件及文件夹的变化
- java 监控文件夹变化(钩子文件)
- java监控文件夹内文件变化并且进行文件同步bigfilesync
- java实时监测文件夹的变化,允许多用户同时访问,完成文件转移
- inotify机制简介(用于监控文件系统中文件及文件夹变化)
- java监控指定路径下文件及文件夹变化
- linux下用inotify-tools监控实时转换视频文件
- 实时监控web server上的文件改动