我们有时候在idea环境下读取工程内文件用className.class.getResourceAsStream() 是可以成功的,
但是打成jar包发布后就读取不到,报错:java.io.FileNotFoundException: file:/app.jar!/BOOT-INF/classes!
所以我们需要改变读取文件的方式,读取jar包内容只能是流的方式。
案例如下:
/*** 读取文件信息
*@paramname 文件路径
*@returnjava.lang.String 返回参数说明
*@exception/throws*/
publicString readFile2Str(String name){
InputStream inputStream= null;
BufferedReader br= null;
StringBuilder sb= newStringBuilder();try{
inputStream= this.getClass().getResourceAsStream("/TASK.md");
br= new BufferedReader(newInputStreamReader(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();
}
}
}returnsb.toString();
}
参考地址:http://zuidaima.com/code/file/1758442014901248.htm?dir=/InputStreamFile/src/com/test/InputStreamFile.java
参考地址:https://segmentfault.com/a/1190000000423350
参考地址:https://www.cnblogs.com/tinaluo/p/12357381.html
参考地址:https://www.cnblogs.com/yadongliang/p/7920053.html