java 读取jar包内文件方法
我们有时候在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