项目打包成jar包,在代码层面获取jar包内的一些文件时,传统的获取方法因为路径或加载器的不同导致无法获取文件,参考网上一些方法,只能从jar包获取文件流,再从流中获取相关的内容,借此记录。
/**
* 从文件中读取模板文件代码
*
* @return 模板文件代码字符串
*/
private String getTemplateCode() {
String content;
File file;
try {
//此处要考虑项目打成jar包后要从jar中获取文件
//1、生成临时文件
file = File.createTempFile("floor",".html");
//2、读取文件流
InputStream ins = this.getClass().getResourceAsStream("/template/floor.html");
//3、流复制进文件
FileUtils.copyInputStreamToFile(ins,file);
//4、guava 文件格式读取
CharSource charSource = Files.asCharSource(file, Charsets.UTF_8);
List<String> code = charSource.readLines();
content = joiner.join(code);
} catch (IOException e) {
LOGGER.error("",e);
return "";
}
//4、删除文件
if(file.exists()){
file.delete();
}
return content;
}