我们有时候在idea环境下读取工程内文件用className.class.getResourceAsStream() 是可以成功的,
但是打成jar包发布后就读取不到,报错:java.io.FileNotFoundException: file:/app.jar!/BOOT-INF/classes!
所以我们需要改变读取文件的方式,读取jar包内容只能是流的方式。
案例如下:
/**
* 读取文件信息
* @param name 文件路径
* @return java.lang.String 返回参数说明
* @exception/throws
*/
public String readFile2Str(String name){
InputStream inputStream = null;
BufferedReader br = null;
StringBuilder sb = new StringBuilder();
try {
inputStream = this.getClass().getResourceAsStream("/TASK.md");
br = new BufferedReader(new InputStreamReader(inputStream));
String line;
while((line = br.readLine()) != null){
sb.append(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if(inputStream != null){
try{
inputStream.close();
}catch (IOException e){
e.printStackTrace();
}
}
if(br != null){
try{
br.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
return sb.toString();
}