直接贴代码:
/** * 读取文件,若文件修改后则重新加载,否则使用缓存 * @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; }
?