使用commons-io-2.0监听文件变化
2018-03-21 20:50:14
1090次阅读
0个评论
继承FileAlterationListenerAdaptor 实现它的功能:
import java.io.File;
import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;
import org.apache.commons.io.monitor.FileAlterationObserver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class FileListerAdapter extends FileAlterationListenerAdaptor {
private static final Logger logger = LoggerFactory.getLogger(FileListerAdapter.class);
@Override
public void onFileChange(File file) {
if (!file.exists() || !file.canRead()) {
logger.info("The file {} is not exists or is not readable!", file);
return;
}
logger.info("----The file {} is change.", file);
//TODO 读取操作
super.onFileChange(file);
}
@Override
public void onFileCreate(File file) {
if (!file.exists()) {
logger.info("The file {} is not exists!", file);
return;
}
if (!file.canRead()) {
logger.info("The file {} is not readable!", file);
return;
}
logger.info("----The file {} is created.", file);
//TODO 读取操作
super.onFileCreate(file);
}
@Override
public void onFileDelete(File file) {
logger.info("----The file {} is deleted.", file);
super.onFileDelete(file);
}
@Override
public void onDirectoryChange(File directory) {
if (!directory.exists()) {
logger.info("The directory {} is not exists!", directory);
return;
}
logger.info("----The directory {} has changed.", directory);
super.onDirectoryChange(directory);
}
@Override
public void onDirectoryCreate(File directory) {
if (!directory.exists()) {
logger.info("The directory {} is not exists!", directory);
return;
}
logger.info("----The directory {} is created.", directory);
super.onDirectoryCreate(directory);
}
@Override
public void onDirectoryDelete(File directory) {
logger.info("----The directory {} is deleted.", directory);
super.onDirectoryDelete(directory);
}
}
调用方法:
FileAlterationMonitor monitor = new FileAlterationMonitor(1000L);// 每隔1000毫秒扫描一次
for (File listenFile:files) {
FileAlterationObserver observer = new FileAlterationObserver(listenFile, new FileFilterImpl());
FileListerAdapter listener = new FileListerAdapter();
observer.addListener(listener);
monitor.addObserver(observer);
}
monitor.start();
new FileAlterationObserver 的时候还需要使用到一个FileFilter 的接口实现,实现它的accept 方法即可。
这样就可以轻松实现对多个目录的文件监听,需要监听的文件可以使用正则表达式去过滤。
00
相关话题
- 使用commons-vfs监听文件系统
- jQuery监听输入框值赋值变化
- Apache commons compress文件打包、压缩
- Apache-Commons CSV读写文件
- AWS S3 SDK 2.0删除文件夹
- Linux上使用commons-net.jar注意的问题
- SpringMVC使用StandardServletMultipartResolver上传文件
- SpringBoo使用jasypt加密配置文件
- 使用jquery-form.js异步上传文件
- Apache的commons-net实现FTP的文件上传下载
- vue中watch监听数组或者对象
- Apache Commons Compress zip压缩解压
- Vue2.0 移动端拍照压缩图片预览及上传
- commons-lang3提示“The type StringEscapeUtils is deprecated”
- nginx 多组件安装及secure_link配置与文件下载防盗链的使用