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 环境上进行部署也可以正常的读取。

总结

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

相关文章

  • SpringBoot通过@MatrixVariable进行传参详解

    SpringBoot通过@MatrixVariable进行传参详解

    这篇文章主要介绍了SpringBoot使用@MatrixVariable传参,文章围绕@MatrixVariable展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-06-06
  • Java实现文件上传下载以及查看功能

    Java实现文件上传下载以及查看功能

    这篇文章主要为大家详细介绍了java如何实现文件上传和下载以及查看功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • 举例讲解Java的内部类与类的加载器

    举例讲解Java的内部类与类的加载器

    这篇文章主要介绍了Java的内部类与类的加载器,是Java入门学习中的基础知识,需要的朋友可以参考下
    2016-03-03
  • SpringBoot如何处理@KafkaListener消息

    SpringBoot如何处理@KafkaListener消息

    Spring通过KafkaMessageListenerContainer、ConcurrentMessageListenerContainer等组件实现Kafka消息的监听和处理,并通过@KafkaListener注解将业务逻辑与Kafka消费者连接起来,Spring Boot自动配置Kafka相关组件,简化了Kafka的使用
    2024-12-12
  • Java对象在JVM中的生命周期详解

    Java对象在JVM中的生命周期详解

    这篇文章主要介绍了Java对象在JVM中的生命周期详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • Java实现字符串切割的方法详解

    Java实现字符串切割的方法详解

    这篇文章主要为大家介绍了一些Java中切割字符串的小技巧,可以把性能提升5~10倍。文中的示例代码讲解详细,快跟随小编一起学习一下
    2022-03-03
  • IDEA中springboot的热加载thymeleaf静态html页面的方法

    IDEA中springboot的热加载thymeleaf静态html页面的方法

    这篇文章主要介绍了IDEA中springboot的热加载thymeleaf静态html页面的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • Java中ArrayList 和 HashMap 自动扩容机制详解

    Java中ArrayList 和 HashMap 自动扩容机制详解

    本文深入分析了Java集合框架中ArrayList和HashMap的自动扩容机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-03-03
  • SpringBoot日志进阶实战之Logback配置经验和方法

    SpringBoot日志进阶实战之Logback配置经验和方法

    本文给大家介绍在SpringBoot中使用Logback配置日志的经验和方法,并提供了详细的代码示例和解释,包括:滚动文件、异步日志记录、动态指定属性、日志级别、配置文件等常用功能,覆盖日常Logback配置开发90%的知识点,感兴趣的朋友跟随小编一起看看吧
    2023-06-06
  • Maven2环境安装与准备工作详解

    Maven2环境安装与准备工作详解

    这篇文章主要为大家详细介绍了Maven2环境安装与准备工作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06

最新评论