FileAlterationMonitor实现文件监听

文件监听组件

Apacha common.io2.0提供了监听文件变化的功能。

功能由三个组件组成。

  1. 监听器 FileAlterationListener

    用于实现文件改变时触发的行为。

  2. 观察者 FileAlterationObserver

    用于观察文件的改变,通知注册的监听器执行相应的事件。

  3. 监视器 FileAlterationMonitor

    通过一线程,每间隔一段时间调用一次注册的观察者检查文件。

maven依赖

1
2
3
4
5
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>

FileAlterationListener

通过继承FileAlterationListenerAdaptor,覆盖相应事件方法。这里只重写了文件改变。还有其他事件可以查看FileAlterationListener接口看下。

1
2
3
4
5
6
7
    public class FileAlterationReload extends FileAlterationListenerAdaptor {

@Override
public void onFileChange(File file) {
System.out.println("文件改变");
}
}

程序实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Demo {

public static void main(String[] args) throws Exception {


//检查classpath下properties文件夹下的properties文件。
FileAlterationObserver fileAlterationObserver = new FileAlterationObserver(Demo.class.getClassLoader().getResource("properties").getPath(),new PropertiesFileFilter());

FileAlterationListener fileAlterationListener =new FileAlterationReload();
//注册监听器
fileAlterationObserver.addListener(fileAlterationListener);
FileAlterationMonitor fileAlterationMonitor = new FileAlterationMonitor();
//注册观察者
fileAlterationMonitor.addObserver(fileAlterationObserver);
//启动监听
fileAlterationMonitor.start();
//让主线程别这么快结束。
Thread.sleep(1000000);

}
}

修改properties文件夹下的properties文件时,会输出 文件改变。

应用场景

可以用于实现配置文件的热部署