java监控文件的创建、修改、删除
开发过程中我们需要对某个目录或者某个文件做监听,当文件的创建、修改、删除时执行某些操作。除了使用定时任务来定时监听之外,还可以使用apache.commons.io包的监听工具类。
·
开发过程中我们需要对某个目录或者某个文件做监听,当文件的创建、修改、删除时执行某些操作。
除了使用定时任务来定时监听之外,还可以使用apache.commons.io包的监听工具类。
import org.apache.commons.io.monitor.FileAlterationListener;
import org.apache.commons.io.monitor.FileAlterationMonitor;
import org.apache.commons.io.monitor.FileAlterationObserver;
import java.io.File;
public class FileMonitor {
private FileAlterationMonitor monitor;
public FileMonitor(long interval) {
monitor = new FileAlterationMonitor(interval);
}
/**
* 给文件添加监听
*
* @param path 文件路径
* @param listener 文件监听器
*/
public void monitor(String path, FileAlterationListener listener) {
FileAlterationObserver observer = new FileAlterationObserver(new File(path));
monitor.addObserver(observer);
observer.addListener(listener);
}
public void stop() throws Exception {
monitor.stop();
}
public void start() throws Exception {
monitor.start();
}
public static void main(String[] args) throws Exception {
FileMonitor fileMonitor = new FileMonitor(1000);
fileMonitor.monitor("F:\\test\\", new FileTail()); // FileTail、FileListener
fileMonitor.start();
}
}
import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;
import org.apache.commons.io.monitor.FileAlterationObserver;
import java.io.File;
public class FileListener extends FileAlterationListenerAdaptor {
@Override
public void onStart(FileAlterationObserver observer) {
super.onStart(observer);
//System.out.println("onStart");
}
@Override
public void onDirectoryCreate(File directory) {
System.out.println("新建:" + directory.getAbsolutePath());
}
@Override
public void onDirectoryChange(File directory) {
System.out.println("修改:" + directory.getAbsolutePath());
}
@Override
public void onDirectoryDelete(File directory) {
System.out.println("删除:" + directory.getAbsolutePath());
}
@Override
public void onFileCreate(File file) {
String compressedPath = file.getAbsolutePath();
System.out.println("新建:" + compressedPath);
if (file.canRead()) {
System.out.println("文件变更,进行处理");
}
}
@Override
public void onFileChange(File file) {
String compressedPath = file.getAbsolutePath();
System.out.println("修改:" + compressedPath);
}
@Override
public void onFileDelete(File file) {
System.out.println("删除:" + file.getAbsolutePath());
}
@Override
public void onStop(FileAlterationObserver observer) {
super.onStop(observer);
//System.out.println("onStop");
}
}
更多推荐
已为社区贡献16条内容
所有评论(0)