当文件夹下的文件有变动时(新增、修改、删除。。。)需要作出相应的处理,如每当在文件夹里插入一个文件就要拿出来解析入库,这时就需要一个文件夹监听的工具。我使用的是----Common-io中的FileAlterationListenerAdaptor,只需要继承该类,并且修改相应的方法即可。
public class FileListener extends FileAlterationListenerAdaptor {
/**
* 此方法必须要被重写,如果不写此方法,监听器将失效
*/
@Override
public void onStart(FileAlterationObserver observer) {
super.onStart(observer);
}
@Override
public void onStop(FileAlterationObserver observer) {
super.onStop(observer);
}
/**
* 文件创建时执行
*/
@Override
public void onFileCreate(File file) {
System.out.println("有文件新增");
}
/**
* 文件改变时执行
* @param file
*/
@Override
public void onFileChange(File file) {
System.out.println("有文件改变");
}
/**
* 文件删除时执行
* @param file
*/
@Override
public void onFileDelete(File file) {
System.out.println("有文件删除");
}
}
根据业务需要,在对应的方法里编写对file的处理。
运行:
public static void main(String[] args) {
//定义文件目录
String path = "D:/";
FileAlterationObserver observer = new FileAlterationObserver(path);
FileListener listener = new FileListener();
// 为观察对象添加收听对象
observer.addListener(listener);
// 配置Monitor,第一个参数单位是毫秒,是监听的间隔;第二个参数就是绑定我们之前的观察对象。
FileAlterationMonitor fileMonitor = new FileAlterationMonitor(
1000, observer);
// / 启动开始监听
try {
fileMonitor.start();
} catch (Exception e) {
e.printStackTrace();
}
}