Java 文件监控,实时监控文件加载之Commons-io





今天看到一网友写的 Java 文件监控,实时监控文件加载 ,突然想到Commons-io中已有此功能的实现,先温习下 写个简单的Demo:

 

import java.io.File;

import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;
import org.apache.commons.io.monitor.FileAlterationObserver;
import org.apache.log4j.Logger;

/**
 * 文件变化监听器
 *
 * 在Apache的Commons-IO中有关于文件的监控功能的代码. 文件监控的原理如下:
 * 由文件监控类FileAlterationMonitor中的线程不停的扫描文件观察器FileAlterationObserver,
 * 如果有文件的变化,则根据相关的文件比较器,判断文件时新增,还是删除,还是更改。(默认为1000毫秒执行一次扫描)
 *
 * @author wy
 *
 */
public class FileListener extends FileAlterationListenerAdaptor {
    private Logger log = Logger.getLogger(FileListener.class);

    /**
     * 文件创建执行
     */
    @Override
    public void onFileCreate(File file) {
        System.out.println("[新建]:" + file.getAbsolutePath());
    }

    /**
     * 文件创建修改
     */
    @Override
    public void onFileChange(File file) {
        System.out.println("[修改]:" + file.getAbsolutePath());
    }

    /**
     * 文件删除
     */
    @Override
    public void onFileDelete(File file) {
        System.out.println("[删除]:" + file.getAbsolutePath());
    }

    /**
     * 目录创建
     */
    @Override
    public void onDirectoryCreate(File directory) {
        System.out.println("[新建]:" + directory.getAbsolutePath());
    }

    /**
     * 目录修改
     */
    @Override
    public void onDirectoryChange(File directory) {
        System.out.println("[修改]:" + directory.getAbsolutePath());
    }

    /**
     * 目录删除
     */
    @Override
    public void onDirectoryDelete(File directory) {
        System.out.println("[删除]:" + directory.getAbsolutePath());
    }

    @Override
    public void onStart(FileAlterationObserver observer) {
        // TODO Auto-generated method stub

        super.onStart(observer);
        System.out.println("0000000");
    }

    @Override
    public void onStop(FileAlterationObserver observer) {
        // TODO Auto-generated method stub
        super.onStop(observer);
        System.out.println("111111111111");
    }

}

Java代码  复制代码  收藏代码
  1. package wy.util.filemonitor;  
  2.   
  3. import java.util.concurrent.TimeUnit;  
  4.   
  5. import org.apache.commons.io.filefilter.FileFilterUtils;  
  6. import org.apache.commons.io.monitor.FileAlterationMonitor;  
  7. import org.apache.commons.io.monitor.FileAlterationObserver;  
  8.   
  9. /** 
  10.  * 文件监控测试 
  11.  *  
  12.  * 在Apache的Commons-IO中有关于文件的监控功能的代码. 文件监控的原理如下: 
  13.  * 由文件监控类FileAlterationMonitor中的线程不停的扫描文件观察器FileAlterationObserver, 
  14.  * 如果有文件的变化,则根据相关的文件比较器,判断文件时新增,还是删除,还是更改。(默认为1000毫秒执行一次扫描) 
  15.  *  
  16.  * @author wy 
  17.  * 
  18.  */  
  19. public class FileMonitorTest {  
  20.   
  21.     /** 
  22.      * @param args 
  23.      */  
  24.     public static void main(String[] args) throws Exception{  
  25.         // 监控目录    
  26.         String rootDir = "F:\\Resume";    
  27.         // 轮询间隔 5 秒    
  28.         long interval = TimeUnit.SECONDS.toMillis(5);  
  29.         // 创建一个文件观察器用于处理文件的格式    
  30.         FileAlterationObserver _observer = new FileAlterationObserver(    
  31.                                               rootDir,     
  32.                                               FileFilterUtils.and(    
  33.                                                FileFilterUtils.fileFileFilter(),    
  34.                                                FileFilterUtils.suffixFileFilter(".txt")),  //过滤文件格式    
  35.                                               null);    
  36.         FileAlterationObserver observer = new FileAlterationObserver(rootDir);  
  37.           
  38.         observer.addListener(new FileListener()); //设置文件变化监听器    
  39.         //创建文件变化监听器    
  40.         FileAlterationMonitor monitor = new FileAlterationMonitor(interval, observer);    
  41.         // 开始监控    
  42.         monitor.start();    
  43.     }  
  44.   
  45. }  











猜你喜欢

转载自blog.csdn.net/qq_32253371/article/details/79230990