1,文件监听类
import cn.golaxy.jg.log.aop.SystemLogAspect;
import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;
import org.apache.commons.io.monitor.FileAlterationObserver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import java.io.File;
/**
* @author Tastill * @version 2019/1/24 14:55
* @description FileListener
*/
public class FileListenerextends FileAlterationListenerAdaptor {
private static Loggerlogger = LoggerFactory.getLogger(SystemLogAspect.class);
/* @Autowired
FileConfigLoader fileConfigLoader;*/
/**
* @description 启动监听
* @param
* @return
* @version 2.0, 2019/1/24 15:08
* @author Tastill*/
@Override
public void onStart(FileAlterationObserver observer) {
// 只允许一台服务器可以监听
System.out.println("启动监听器:");
}
@Override
public void onDirectoryCreate(File directory) {
logger.info("有新文件夹生成:"+directory.getName());
}
@Override
public void onDirectoryChange(File directory) {
logger.info("有文件夹内容发生变化:"+directory.getName());
}
@Override
public void onDirectoryDelete(File directory) {
logger.info("有文件夹被删除:"+directory.getName());
}
/**
* @description 文件创建
* @param
* @return
* @version 2.0, 2019/1/24 14:59
* @author Tastill*/
@Override
public void onFileCreate(File file){
logger.info("有新文件生成:"+file.getName());
}
/**
* @description 文件内容发生变化
* @param
* @return
* @version 2.0, 2019/1/24 15:05
* @author Tastill*/
@Override
public void onFileChange(File file){
logger.info("有文件被修改:"+file.getName());
}
/**
* @description 文件被删除
* @param
* @return
* @version 2.0, 2019/1/24 16:13
* @author Tastill*/
@Override
public void onFileDelete(File file){
logger.info("有文件被删除:"+file.getName());
}
/**
* @description 监听停止
* @param
* @return
* @version 2.0, 2019/1/24 15:07
* @author Tastill*/
@Override
public void onStop(FileAlterationObserver observer){
System.out.println("监听停止");
}
}
2,开启监听
import org.apache.commons.io.filefilter.FileFilterUtils;
import org.apache.commons.io.monitor.FileAlterationMonitor;
import org.apache.commons.io.monitor.FileAlterationObserver;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.concurrent.TimeUnit;
/**
* @author Tastill * @version 2019/1/24 15:00
* @description FileMonitorTest
*/
@Component
public class FileMonitor {
/**
* @description
* @param
* @return
* @version 2.0, 2019/1/25 9:44
* @author Tastill*/
@PostConstruct
public void initFileMonitor() {
System.out.println("----------------");
// 监控目录
String rootDir ="D:\\Test";
// 轮询间隔 5 秒
Integer time =10;
long interval = TimeUnit.SECONDS.toMillis(time);
// 创建一个文件观察器用于处理文件的格式,
// FileFilterUtils.suffixFileFilter(".txt")
FileAlterationObserver _observer =new FileAlterationObserver(
rootDir,
FileFilterUtils.and(
FileFilterUtils.fileFileFilter()),//过滤文件格式
null);
FileAlterationObserver observer =new FileAlterationObserver(rootDir);
observer.addListener(new FileListener());//设置文件变化监听器
//创建文件变化监听器
FileAlterationMonitor monitor =new FileAlterationMonitor(interval, observer);
// 开始监控
try {
monitor.start();
}catch (Exception e) {
e.printStackTrace();
}
}
}