SpringBoot如何读取Resource下的文件

 更新时间:2025年04月22日 09:05:25   作者:早睡早起爱学习i  
这篇文章主要介绍了SpringBoot如何读取Resource下的文件问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

SpringBoot项目构建成jar运行,如何正确读取resource里的文件

SpringBoot 项目在打包成jar 文件后运行在服务器上后是无法读取到 jar 文件中的内容的

总结了一般有如下四种读取文件的方式:

第一种

ClassPathResource classPathResource = new ClassPathResource("excleTemplate/test.xlsx");
InputStream inputStream = classPathResource.getInputStream();

第二种

InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("excleTemplate/test.xlsx");

第三种

InputStream inputStream  = this.getClass().getResourceAsStream("/excleTemplate/test.xlsx");

第四种

File file = ResourceUtils.getFile("classpath:excleTemplate/test.xlsx");
InputStream inputStream = new FileInputStream(file);

前三种方法在开发环境(IDE中)和生产环境(linux部署成jar包)都可以读取到,第四种只有开发环境 时可以读取到,生产环境读取失败。

推测主要原因是springboot内置tomcat,打包后是一个jar包,无法直接读取jar包中的文件,读取只能通过类加载器读取。

前三种都可以读取到其实殊途同归,直接查看底层代码都是通过类加载器读取文件流,类加载器可以读取jar包中的编译后的class文件,当然也是可以读取jar包中的excle模板了。

总结

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

相关文章

  • Java Swing中的表格(JTable)和树(JTree)组件使用实例

    Java Swing中的表格(JTable)和树(JTree)组件使用实例

    这篇文章主要介绍了Java Swing中的表格(JTable)和树(JTree)组件使用实例,本文同时讲解了表格和树的基本概念、常用方法、代码实例,需要的朋友可以参考下
    2014-10-10
  • Java SE循环一些基本练习题总结

    Java SE循环一些基本练习题总结

    循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,下面这篇文章主要给大家总结介绍了关于Java SE循环一些基本练习题,需要的朋友可以参考下
    2024-03-03
  • SpringBoot整合分布式锁redisson的示例代码

    SpringBoot整合分布式锁redisson的示例代码

    这篇文章主要介绍了SpringBoot整合分布式锁redisson,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • Java日常练习题,每天进步一点点(10)

    Java日常练习题,每天进步一点点(10)

    下面小编就为大家带来一篇Java基础的几道练习题(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望可以帮到你
    2021-07-07
  • java对于目录下文件的单词查找操作代码实现

    java对于目录下文件的单词查找操作代码实现

    这篇文章主要介绍了java对于目录下文件的单词查找操作代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Springboot+devtools配置热部署过程

    Springboot+devtools配置热部署过程

    SpringBoot提供的spring-boot-devtools模块可以实现应用的热部署,极大提升开发效率,通过添加POM依赖、配置yml文件、使用IDE快捷键等步骤,可以无需手动重启即可自动加载变更,这种方式不仅适用于静态文件的自动加载,也适用于整个SpringBoot工程,是提高开发效率的有效手段
    2024-11-11
  • Spring 单元测试中如何进行 mock的实现

    Spring 单元测试中如何进行 mock的实现

    这篇文章主要介绍了Spring 单元测试中如何进行 mock的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Spring中@Configuration和@Component注解的区别及原理

    Spring中@Configuration和@Component注解的区别及原理

    这篇文章主要介绍了Spring中@Configuration和@Component注解的区别及原理,从功能上来讲,这些注解所负责的功能的确不相同,但是从本质上来讲,Spring内部都将其作为配置注解进行处理,需要的朋友可以参考下
    2023-11-11
  • 一看就懂 详解JAVA泛型通配符T,E,K,V区别

    一看就懂 详解JAVA泛型通配符T,E,K,V区别

    泛型从字面上理解,是指一个类、接口或方法支持多种类型,使之广泛化、一般化和更加通用。通配符只有在修饰一个变量时会用到,使用它可方便地引用包含了多种类型的泛型;下面我们来深入了解一下吧
    2019-06-06
  • java二维数组基础知识详解

    java二维数组基础知识详解

    这篇文章主要介绍了java二维数组基础知识详解的相关资料,需要的朋友可以参考下
    2023-02-02

最新评论