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模板了。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Spring整合Quartz Job以及Spring Task的实现方法
下面小编就为大家分享一篇Spring整合Quartz Job以及Spring Task的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2017-12-12
解析Spring RestTemplate必须搭配MultiValueMap的理由
本文给大家介绍Spring RestTemplate必须搭配MultiValueMap的理由,本文通过实例图文相结合给大家介绍的非常详细,需要的朋友参考下吧2021-11-11
IntelliJ IDEA2020.2.2创建Servlet方法及404问题
这篇文章主要介绍了IntelliJ IDEA2020.2.2创建Servlet方法及404问题,这里小编使用的2020.2.2企业破解版本,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-09-09
mybatis报错元素内容必须由格式正确的字符数据或标记组成异常的解决办法
今天小编就为大家分享一篇关于mybatis查询出错解决办法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧2018-12-12


最新评论