SpringBoot如何读取resources目录下的文件

 更新时间:2023年07月20日 11:00:42   作者:GaoYang8320  
这篇文章主要介绍了SpringBoot如何读取resources目录下的文件问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

SpringBoot读取resources目录下的文件

最近实验室的项目中遇到一个问题:需要读取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文件的目录结构:

jar目录结构

Springboot读取resources文件(适用于linux环境)

InputStream is = this.getClass().getResourceAsStream(“文件路径”);
String s = IOUtils.toString(is, “utf8”);// org.apache.commons.io

两步就可以简单的完成读取 resources 目录下的文件了,并且打成 jar 包发布到 linux 环境上进行部署也可以正常的读取。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java基础知识总结之继承

    Java基础知识总结之继承

    这一篇我们来学习面向对象的第二个特征——继承,文中有非常详细的基础知识总结,对正在学习java的小伙伴们很有帮助,需要的朋友可以参考下
    2021-06-06
  • java实现文件上传下载

    java实现文件上传下载

    这篇文章主要为大家详细介绍了java实现文件上传下载功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • Mybatis配置映射文件中parameterType的用法讲解

    Mybatis配置映射文件中parameterType的用法讲解

    这篇文章主要介绍了Mybatis配置映射文件中parameterType的用法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • spring boot 图片上传与显示功能实例详解

    spring boot 图片上传与显示功能实例详解

    这篇文章主要介绍了spring boot 图片上传与显示功能实例详解,需要的朋友可以参考下
    2017-04-04
  • SpringBoot监听Nacos动态修改日志级别的操作方法

    SpringBoot监听Nacos动态修改日志级别的操作方法

    线上系统的日志级别一般都是 INFO 级别,有时候需要查看 WARN 级别的日志,所以需要动态修改日志级别,微服务项目中使用 Nacos 作为注册中心,我们可以监听 Nacos 配置,修改日志级别,这篇文章主要介绍了SpringBoot监听Nacos动态修改日志级别的操作方法,需要的朋友可以参考下
    2023-12-12
  • 关于JDK+Tomcat+eclipse+MyEclipse的配置方法,看这篇够了

    关于JDK+Tomcat+eclipse+MyEclipse的配置方法,看这篇够了

    关于JDK+Tomcat+eclipse+MyEclipse的配置问题,很多朋友都搞不太明白,网上一搜配置方法多种哪种最精简呢,今天小编给大家分享一篇文章帮助大家快速掌握JDK Tomcat eclipse MyEclipse配置技巧,需要的朋友参考下吧
    2021-06-06
  • 动态更改Spring定时任务Cron表达式的优雅方案实例详解

    动态更改Spring定时任务Cron表达式的优雅方案实例详解

    spring定时器非常强大,但是有时候我们需要在不需要重启应用就可以动态的改变Cron表达式的值,下面这篇文章主要给大家介绍了关于动态更改Spring定时任务Cron表达式的优雅方案,需要的朋友可以参考下
    2022-12-12
  • log4j2的异步使用及添加自定义参数方式

    log4j2的异步使用及添加自定义参数方式

    这篇文章主要介绍了log4j2的异步使用及添加自定义参数方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Java获得指定区间数的方法

    Java获得指定区间数的方法

    这篇文章主要介绍了Java获得指定区间数的方法,涉及java数值运算的相关技巧,需要的朋友可以参考下
    2015-05-05
  • java 实现单链表逆转详解及实例代码

    java 实现单链表逆转详解及实例代码

    这篇文章主要介绍了java 实现单链表逆转实例代码的相关资料,需要的朋友可以参考下
    2017-02-02

最新评论