springboot上传文件到resources_SpringBoot读取resources目录下的文件

参考:https://blog.csdn.net/gaoyang8320/article/details/89672088

最近实验室的项目中遇到一个问题:需要读取SpringBoot项目中resources目录下的文件,现在把我踩过的坑写出来。

需要读取jar包中的resources文件的,第三种方法是可以的,前两个可以直接跳过

SpringBoot项目读取resources目录下的文件,通过查阅资料和以往经验,刚开始采用Java传统的读取文件的方式,发现在IDEA上是可以读取成功的,但是项目打包jar后在服务器上运行找不到文件。于是换到另外两种方式,下面依次说明这三种方式:

目录结构:需要读取resources/static/assets/test.txt文件

1. 传统java读取方式

File file = new File("src/main/resources/static/assets/test.txt");

InputStream inputStream=new FileInputStream(file);

这种方式在idea上运行是可以的,但是打成jar包是会报文件找不到异常的

2. ResourceUtils工具类

上述方案是最先写的,这肯定是不行的,因为打包后的jar文件的目录结构不会从src开始,经百度后查到jar文件中的资源,读取时必须使用流的方式,查到可以使用ResourceUtils类获得文件流,如下:

File file = ResourceUtils.getFile("classpath:static/assets/test.txt");

InputStream inputStream=new FileInputStream(file);

这种方式在idea上运行是可以的,但是打成jar包是会报文件找不到异常的

3. ClassPathResource类

ClassPathResource classPathResource = new ClassPathResource("static/assets/test.txt");

InputStream inputStream = classPathResource.getInputStream();

这种方法在idea上运行是可以的,打成jar包也是可以的。

与方法2的区别可以看一下这篇博客

与上面的项目相对应的jar文件的目录结构:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值