直接贴代码:
/**
* 读取文件,若文件修改后则重新加载,否则使用缓存
* @param classpath
* @return
* @throws IOException
*/
public static String getTextByPathNoCached(String classpath) throws IOException {
String filePath=getInstance().getClass().getResource(classpath).getFile();
File currFile=new File(filePath);
InputStream in=null;
boolean modifiedB=isModified(classpath,currFile.lastModified());
if(modifiedB){//重新加载
in =new FileInputStream(filePath);
}else {
in = getInstance().getClass().getResourceAsStream(classpath);
if (in == null) {
throw new FileNotFoundException(classpath + "(系统找不到指定的文件。)");
}
}
byte[] chs = new byte[in.available()];
in.read(chs);
in.close();
return new String(chs, "utf-8");
}
/**
* 判断文件是否修改
* @param keypath
* @return
*/
public static boolean isModified(String keypath,long curr){
boolean isModified=false;
String lastModified=System.getProperty(keypath);
if(null==lastModified){
System.setProperty(keypath, Long.valueOf(curr).toString());
}else {
long lastModifiedL=Long.valueOf(System.getProperty(keypath));
isModified=curr!=lastModifiedL;
}
//更新最后一次修改时间
/**if(isModified){
System.setProperty(keypath, Long.valueOf(curr).toString());
}**/
log.info("File res:"+keypath+"\t is modified "+isModified);
return isModified;
}