我們有時候在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(); }
參考地址: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