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

原文地址:https://www.cnblogs.com/wbl001/p/14419079.html