<listenerUtil > 监听器工具类
package com.*.listener;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
* Created by 22431 on 2016/8/22.
*/
public class ListenerUtil implements Runnable {
//是否启动监听
private boolean startFlag = true;
//5秒监听一次
private int interval = 5000;
private static File fileName ;
private static Map<String , Long> objItem ;
//初始化
static {
fileName = new File("D:/testListener.txt");
objItem = new HashMap<String, Long>();
addFileName(fileName);
}
/**
* 添加监听文件
*/
public static void addFileName(File fileName){
//判断文件路径是否为空
if (fileName.exists() && fileName.isFile()){
try {
long lastModifyTime = fileName.lastModified();
objItem.put(fileName.getPath(), lastModifyTime);
System.out.println("添加文件成功");
}catch (Exception e){
e.printStackTrace();
System.out.println("文件添加失败");
}
}
}
/**
* 监听文件是否有变动
*/
public void checkMap(Map<String , Long> map) {
if (map != null && !map.isEmpty()) {
String filePath = "";
Set<String> set = map.keySet();
for (String string : set) {
filePath = string;
}
File file = new File(filePath);
long newModifyTime = file.lastModified();
long lastModifyTime = map.get(filePath);
if (newModifyTime != lastModifyTime){
System.out.println("文件改动啦!");
objItem.clear();
objItem.put(file.getPath() , file.lastModified());
}
}
}
@Override
public void run() {
while (startFlag){
try {
Thread.sleep(interval);
checkMap(objItem);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
//测试
public static void main(String[] args) {
(new Thread(new ListenerUtil())).start();
}
}