监控文件变化范例(文件增加,修改……)
监控目录下文件及目录的变动
应对变化响应适配的基类是FileAlterationListenerAdaptor,
org.apache.commons.io.monitor.FileAlterationListenerAdaptor的源码
package org.apache.commons.io.monitor; import java.io.File; public class FileAlterationListenerAdaptor implements FileAlterationListener { public void onStart(final FileAlterationObserver observer) { } public void onDirectoryCreate(final File directory) { } public void onDirectoryChange(final File directory) { } public void onDirectoryDelete(final File directory) { } public void onFileCreate(final File file) { } public void onFileChange(final File file) { } public void onFileDelete(final File file) { } public void onStop(final FileAlterationObserver observer) { } }
范例如下:(主要是针对文件修改的情况)
package com.von.tools; import java.io.File; import java.io.FileFilter; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.util.concurrent.TimeUnit; import org.apache.commons.io.IOUtils; import org.apache.commons.io.monitor.FileAlterationListenerAdaptor; import org.apache.commons.io.monitor.FileAlterationMonitor; import org.apache.commons.io.monitor.FileAlterationObserver; public class ConfigFileMonitor { // 监测文件变动 设置的目录,后缀名为properties的文件 public static void main(String[] args) throws Exception { // if(0==args.length) // { // return; // } assert args.length > 0; String root = args[0]; long interval = TimeUnit.SECONDS.toMillis(1);// 监听频率 FileAlterationObserver observer = new FileAlterationObserver(root, new FileFilter() { public boolean accept(File pathname) { return pathname.getName().endsWith(".properties"); } }); observer.addListener(new ConfigFileWatcher()); FileAlterationMonitor monitor = new FileAlterationMonitor(interval, observer); monitor.start(); } static class ConfigFileWatcher extends FileAlterationListenerAdaptor { public void onFileChanged(File file) { //reload properties //读文件范例 InputStream in = null; try { in = new FileInputStream(""); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } //关闭流工具 范例 IOUtils.closeQuietly(in); } } }
浙公网安备 33010602011771号