.xml正向反向取值(之四)

FileListener类:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.TimerTask;

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.kxml2.io.KXmlParser;
import org.kxml2.kdom.Document;
import org.kxml2.kdom.Element;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import com.%##.common.XMLParserHelper;

/*
* Class: FileListener
* Description: 单个文件监听,如果文件已更新则自动重新加载
* Version: 1.0
* Author: Carson.Huang
* Created on Dec 1, 2010
*/
public class FileListener extends TimerTask
{
private File file = null;
private long lastModified = 0;
private Properties prop = new Properties();
private Element element = new Element();

private boolean fileFlag = true;

private Logger logger = Logger.getLogger(FileListener.class);
//所有的枚举文件
private Map<String,EnumerateFile> enumerateFiles=new HashMap<String,EnumerateFile>();
//枚举文件
private List<String> enumPaths=new ArrayList<String>();
//当前的枚举文件名
private String currentEnumFilePath="";

FileListener(String filePath)
{
//设置所有的枚举文件的信息
filePath=setEnumInfo(filePath);
if (filePath != null)
{
this.file = new File(filePath);
if (!file.isFile())
{
logger.error("The file[" + filePath + "] doesn't exist, please check it.");
return;
}

if (this.file.getName().endsWith(".properties"))
{
fileFlag = true;
}
else if (this.file.getName().endsWith(".xml"))
{
fileFlag = false;
}
else
{
logger.info("nothing to do...");
}

}
}

public void run()
{
if (isFileUpdated() && fileFlag)
{
logger.info("The properties file[" + getPath() + "] was modified.");
loadFile();
}else if(isFileUpdated() && !fileFlag){
StringBuffer sb=new StringBuffer();
for(String s : enumerateFiles.keySet()){
sb.append(enumerateFiles.get(s).getReLoadEnumFilePath()).append("\t");
}
logger.info("The properties files[" + sb.toString() + "] was modified.");

loadFile();
}

}

private boolean isFileUpdated()
{
if(this.fileFlag){
long lastUpdateTime = file.lastModified();
return lastUpdateTime > this.lastModified;
}else{
return EnumerateFile.checkFileIsModified(enumerateFiles);
}
}

public void loadFile()
{
if (this.fileFlag)
{
loadProperties();
}
else
{
for(String s : enumerateFiles.keySet()){
if(enumerateFiles.get(s).getReLoadEnumFilePath()!=null&&enumerateFiles.get(s).getReLoadEnumFilePath().length()>1){
currentEnumFilePath=s;
loadXml();
}
}
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值