美文网首页
jar方式运行项目-读取jar包中的文件

jar方式运行项目-读取jar包中的文件

作者: 单名一个冲 | 来源:发表于2021-04-14 11:32 被阅读0次

    应用场景:

    在目前的微服务和容器部署的SpringBoot坏境下,我们一般将项目直接打成 jar包的方式运行(java -jar *),我们可能需要读取resources目录下的自定义文件,想在程序运行时找到该目录,并读取需要的文件。

    踩过的坑:

    当时我使用System.getProperty("user.dir")获取工作目录的坑,本地idea工具运行没问题,但是一但打成jar包,路径会变成jar包所在的目录,无法读取jar内部的文件,不建议用这种方式

    由于jar中的文件都属于资源的一种,所以获取需从类加载器进行获取。正确的姿势是采用this.getClass().getClassLoader().getResourceAsStream()的方式。

    代码示例:

            try (BufferedReader in = new BufferedReader(new InputStreamReader(
                    Objects.requireNonNull(this.getClass()
                                    .getClassLoader().getResourceAsStream(fileName),
                            "文件未找到:" + fileName),
                    StandardCharsets.UTF_8)
            )) {
                // TODO 你的业务代码。。。
            } catch (IOException e) {
                e.printStackTrace();
            }
    
    乱码小提示:

    读取自定义文件时,由于getResourceAsStream方法返回的是一个InputStream流,采用InputStreamReader这种方式最好指定一种编码方式,不然可能中文乱码!(我在解析xml时中文乱码)

    相关文章

      网友评论

          本文标题:jar方式运行项目-读取jar包中的文件

          本文链接:https://www.haomeiwen.com/subject/fnsklltx.html