Jar包中无法获取resource下的文件路径

文章讲述了在jar包代码中使用`newFileInputStream`可能导致空指针异常,原因在于包压缩后文件路径变化。提出通过`ClassPathResource`和IO流创建临时文件,以在jar中正确操作和读取文件的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

异常场景

在打成jar包的代码中使用了new FileInputStream("FilePath.txt")等与文件相关的代码,会造成空指针异常。

异常出现的原因

通过package打成的jar包,也就是通过压缩操作之后的文件路径与项目的原有层级结构是不一致的。

解决方法

在jar中操作或者读取文件,需要通过io流的方式来实现。

思路一:

可以通过创建临时文件来操作获取文件信息。代码如下:

//访问在resource目录下的文件hello.txt

import org.springfamework.core.io.ClassPathRsource;
import org.apache.commons.io.FileUtils

public class Test {
   //此处为示例代码,具体异常和流的处理未体现     
   public void test01(){
        ClassPathResource resource = new ClassPathResource("hello.txt");
        //获取文件流
        InputStream inputStream = resource.getInputStream();
        //创建临时文件,并将流写入此文件
        File tempFile = File.createTempFile("前缀","后缀.txt");
        FileUtils.copyInputStreamToFile(inputStream,tempFile);
        //操作此文件即可
        System.out.println("临时文件路径" + tempFile.getPath());
    }

}  

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值