spring-boot项目直接读取jar包内文件的最简单方法

时间:2021-6-7 作者:qvyue

假设有一个jar包,里面有一个test.txt,里面有一行字符串123abc,现在要在一个以jar命令运行的spring-boot项目环境中读取,要怎么做?

spring-boot项目直接读取jar包内文件的最简单方法
image.png

分两种情况:

  1. jar包在项目外
  2. jar包在项目内

假设把这个jar包,一个放到D盘的test目录下,一个放到spring-boot项目resources目录下的lib子目录里,可以使用以下两种方法分别读取:

@SpringBootApplication
public class DemoApplication {
    private static final Logger logger = LoggerFactory.getLogger(DemoApplication.class);

    public static void main(String[] args) throws IOException {
        SpringApplication.run(DemoApplication.class, args);
        var outerUrl = new URL("jar", null, -1, "file:/D:/test/test-1.0-SNAPSHOT.jar!/test.txt");
        var innerUrl = DemoApplication.class.getClassLoader().getResource("lib/test-1.0-SNAPSHOT.jar!/test.txt");
        logger.info("outerStr:{} and innerStr:{}", new String(outerUrl.openStream().readAllBytes()),
                new String(innerUrl.openStream().readAllBytes()));
    }
}

使用mvn clean package打包项目,然后使用java -jar xxx.jar执行该项目文件,观察日志文件就会发现,两种方式都成功了:

spring-boot项目直接读取jar包内文件的最简单方法
image.png
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。