监控文件变化范例(文件增加,修改……)

监控目录下文件及目录的变动

应对变化响应适配的基类是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);
        }
    }

}

 

posted on 2017-08-08 23:48  Dr.Von  阅读(405)  评论(0)    收藏  举报

导航