package com.filecheck.monitor;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;
public class FileMonitor {
private Timer timer;
private Map<String, FileMonitorTask> timerEntries;
private FileMonitor() {
this.timerEntries = new HashMap<String, FileMonitorTask>();
this.timer = new Timer();
}
public static FileMonitor getInstance() {
//here is a lazy singleton instance.
return FileMonitorHolder.instance;
}
private static class FileMonitorHolder {
private static final FileMonitor instance = new FileMonitor();
}
public void addFileChangeListener(FileChangeListener listener,String filename, long period) {
//remove listener before add a new instance.
this.removeFileChangeListener(filename);
//create a new instance.
FileMonitorTask task = new FileMonitorTask(listener, filename);
//put instance into timerQueue.
this.timerEntries.put(filename, task);
//schedule timer task.
this.timer.schedule(task, period, period);
}
public void removeFileChangeListener(String filename) {
//remove timer task from timer entries.
FileMonitorTask task = (FileMonitorTask) this.timerEntries.remove(filename);
if (task != null) {
//cancel monitor task.
task.cancel();
}
}
private static final class FileMonitorTask extends TimerTask {
private FileChangeListener listener;
private String filename;
private File monitoredFile;
private long lastModified;
public FileMonitorTask(FileChangeListener listener, String filename) {
this.listener = listener;
this.filename = filename;
this.monitoredFile = new File(filename);
if (!this.monitoredFile.exists()) {
return;
}
this.lastModified = this.monitoredFile.lastModified();
}
public void run() {
long latestChange = this.monitoredFile.lastModified();
if (this.lastModified != latestChange) {
this.lastModified = latestChange;
this.listener.fileChanged(this.filename);
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
JAVA文件监控(源码)
共19个文件
class:8个
java:6个
prefs:2个
4星 · 超过85%的资源 需积分: 12 88 下载量 54 浏览量
2012-02-15
11:08:34
上传
评论
收藏 150KB RAR 举报
温馨提示
通过commons-io监测文件。可检查目录的文件新建、修改、删除等变化。 // 监控目录 String rootDir = "c:\\Downloads"; // 轮询间隔 10 秒 long interval = TimeUnit.SECONDS.toMillis(10); //文件格式 IOFileFilter fileFilter = FileFilterUtils.and(FileFilterUtils.fileFileFilter(),FileFilterUtils.suffixFileFilter(".doc")); // 创建一个文件监察器用于处理文件的格式 FileAlterationObserver observer = new FileAlterationObserver(rootDir,fileFilter,null); //设置文件变化监听器 observer.addListener(new FileMonitor()); //创建文件变化监听器 FileAlterationMonitor monitor = new FileAlterationMonitor(interval,observer); //开始监控 monitor.start();
资源推荐
资源详情
资源评论
收起资源包目录
FileMonitor.rar (19个子文件)
FileMonitor
src
com
filecheck
fun
secondmonitor
FileMonitor.java 574B
monitor
ClassFileChangeListener.java 235B
FileMonitor.java 2KB
FileChangeListener.java 126B
test
FileMonitorTest.java 484B
SecondFileMonitorTest.java 1KB
bin
com
filecheck
fun
secondmonitor
FileMonitor.class 1KB
monitor
FileMonitor$FileMonitorHolder.class 720B
FileMonitor$FileMonitorTask.class 1KB
FileChangeListener.class 185B
FileMonitor.class 2KB
ClassFileChangeListener.class 857B
test
FileMonitorTest.class 735B
SecondFileMonitorTest.class 2KB
.classpath 451B
.settings
org.eclipse.core.resources.prefs 88B
org.eclipse.jdt.core.prefs 629B
.project 387B
lib
commons-io-2.0.1.jar 156KB
共 19 条
- 1
mlm588
- 粉丝: 0
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 技术资料分享TF卡资料很好的技术资料.zip
- 技术资料分享TF介绍很好的技术资料.zip
- 10、安徽省大学生学科和技能竞赛A、B类项目列表(2019年版).xlsx
- 9、教育主管部门公布学科竞赛(2015版)-方喻飞
- C语言-leetcode题解之83-remove-duplicates-from-sorted-list.c
- C语言-leetcode题解之79-word-search.c
- C语言-leetcode题解之78-subsets.c
- C语言-leetcode题解之75-sort-colors.c
- C语言-leetcode题解之74-search-a-2d-matrix.c
- C语言-leetcode题解之73-set-matrix-zeroes.c
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
前往页