Apache Commons JCI最佳实践(五)监听文件(夹)的变更
Apache Commons JCIadmin 发布于:2019-06-08 16:09:36
阅读:loading
章接前文,终于又可以接到第一篇文章所说的实现对于文件(夹)的变更监控功能了,这也表示本次的Apache commons项目中的JCI研究就到此准备结束了,掌握到这种较浅的程度去作为技术知识储备也到位了。
说正题,要实现对于一个文件夹的变更(增、删、改)监控,我们使用JCI可以非常简单的实现,前面的几篇文章也是去熟悉它的一个附带,所以这个功能是为了实现代码动态编译后的热部署而来的。
package cn.chendd.example;
import junit.framework.TestCase;
import org.apache.commons.jci.ReloadingClassLoader;
import org.apache.commons.jci.listeners.ReloadingListener;
import org.apache.commons.jci.monitor.FilesystemAlterationMonitor;
import java.io.File;
/**
* @author chendd
* @date 2019/6/8 16:16
* 监听文件(夹)变更事件
*/
public class ListenerDirectory extends TestCase {
public void testListenerDirectory() throws Exception {
ReloadingClassLoader classloader = new ReloadingClassLoader(this.getClass().getClassLoader());
ReloadingListener listener = new ReloadingListener() {
//-----------------------------文件夹监控---------------------------
@Override
public void onDirectoryCreate(File pDir) {
System.out.println("文件夹创建 :" + pDir.getAbsolutePath());
}
@Override
public void onDirectoryChange(File pDir) {
System.out.println("文件夹修改 :" + pDir.getAbsolutePath());
}
@Override
public void onDirectoryDelete(File pDir) {
System.out.println("文件夹删除 :" + pDir.getAbsolutePath());
}
//-----------------------------文件监控-----------------------------
@Override
public void onFileCreate(File pFile) {
System.err.println("文件创建:" + pFile.getAbsolutePath());
}
@Override
public void onFileChange(File pFile) {
System.err.println("文件修改:" + pFile.getAbsolutePath());
}
@Override
public void onFileDelete(File pFile) {
System.err.println("文件删除:" + pFile.getAbsolutePath());
}
};
listener.addReloadNotificationListener(classloader);
File directory = new File("D:\\logs");
FilesystemAlterationMonitor fam = new FilesystemAlterationMonitor();
fam.addListener(directory, listener);
fam.setInterval(1000);//轮询检查事件
fam.start();
//没有别的用途,只是让程序不退出
int index = 1;
while(index < 50) {
Thread.sleep(1000 * 2);
index++;
}
fam.stop();
}
}
https://gitee.com/88911006/chendd-examples
点赞