zoukankan      html  css  js  c++  java
  • apache commons-io相关介绍-monitor包

    apache commons-io相关介绍-monitor包

    org.apache.commons.io.monitor 文件状态监控

    org.apache.commons.io.monitor包的作用监控指定目录下的文件状态。它使用观察者设计模式设计这些类的关系。当文件创建,文件修改和文件删除事件发生时会调用相应的回调函数。

    基本使用方法:

    package com.demo.monitor;
    import java.io.File;
    import org.apache.commons.io.monitor.FileAlterationListener;
    import org.apache.commons.io.monitor.FileAlterationMonitor;
    import org.apache.commons.io.monitor.FileAlterationObserver;
    public class Demo1 {
    public static void main(String[] args) throws Exception {
        File directory = new File(new File("."), "src");
        FileAlterationObserver observer = new FileAlterationObserver(directory);
        observer.addListener(new MyFileAlterationListener());
        long interval = 1000;
        FileAlterationMonitor monitor = new FileAlterationMonitor(interval);
        monitor.addObserver(observer);
        monitor.start();
    }
    
    public static class MyFileAlterationListener implements
            FileAlterationListener {
        public void onStart(FileAlterationObserver observer) {
            // TODO Auto-generated method stub
            System.out.println("--------onStart ---------");
        }
        public void onDirectoryCreate(File directory) {
            // TODO Auto-generated method stub
            System.out.println("--------onDirectoryCreate ---------");
        }
    
        public void onDirectoryChange(File directory) {
            // TODO Auto-generated method stub
            System.out.println("--------onDirectoryChange ---------");
        }
    
        public void onDirectoryDelete(File directory) {
            // TODO Auto-generated method stub
            System.out.println("--------onDirectoryDelete ---------");
        }
    
        public void onFileCreate(File file) {
            // TODO Auto-generated method stub
            System.out.println("--------onFileCreate ---------");
        }
    
        public void onFileChange(File file) {
            // TODO Auto-generated method stub
            System.out.println("--------onFileChange ---------");
        }
    
        public void onFileDelete(File file) {
            // TODO Auto-generated method stub
            System.out.println("--------onFileDelete ---------");
        }
    
        public void onStop(FileAlterationObserver observer) {
            // TODO Auto-generated method stub
            System.out.println("--------onStop ---------");
        }
    
    }
    

    }

    monitor.start();开启监控器,每隔interval毫秒,onStart会被执行一次,直接结束时,onStop将会被调用。Listener的创建过程以上代码是直接继承了FileAlterationListener接口,所有的接口函数必须被实现。这个过程比较繁琐。当调用者只关心其中一些事件却不得不实现所有函数。简化的方法是使用程序提供的一个适配器类FileAlterationListenerAdaptor(这里使用了适配器模式)。这样调用者只需重写关注的事件函数,大大简化了代码。代码如下:

    package com.demo.monitor;
    import java.io.File;
    import org.apache.commons.io.monitor.FileAlterationListener;
    import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;
    import org.apache.commons.io.monitor.FileAlterationMonitor;
    import org.apache.commons.io.monitor.FileAlterationObserver;
    
    public class Demo2 {
        public static void main(String[] args) throws Exception {
            File directory = new File(new File("."), "src");
            FileAlterationObserver observer = new FileAlterationObserver(directory);
            observer.addListener(new FileAlterationListenerAdaptor(){
                @Override
                public void onFileCreate(File file) {
                    System.out.println("---------onFileCreate--------");
                }
            });
            long interval = 1000;
            FileAlterationMonitor monitor = new FileAlterationMonitor(interval);
            monitor.addObserver(observer);
            monitor.start();
        }
    }
  • 相关阅读:
    Win7双击任务栏图标导致窗口还原的问题
    一致性哈希算法及其在分布式系统中的应用(转)
    CAP理论(转)
    从Android界面开发谈起(转)
    Android开发入门之Window 环境概念介绍(转)
    数据库缓存技术(转)
    VoltDB开篇 简介(转)
    window下如何让php支持openssl(转)
    mysql分表的3种方法(转)
    linux crontab 每10秒执行一次
  • 原文地址:https://www.cnblogs.com/xiaozu/p/4555565.html
Copyright © 2011-2022 走看看