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

当SpringBoot项目打包为jar运行时,通过常规方法无法直接读取resource文件,因为它们存在于jar内部。可以使用ClassPathResource读取文本文件流,对于非文本文件,先将其解压到临时目录后再读取。本文提供了相应的代码示例。
摘要由CSDN通过智能技术生成

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

图:from unsplash

不管你使用的是SpringBoot 1.x版本还是SpringBoot2.x版本,在开Dev环境中使用eclipse、IEAD、STS等IDE工具,进行resource目录下文件的获取,简单的采用@Value注解的形式就可以得到,文件读取的主知一般情况下也是没有问题的,比如

度娘检索出来的文章也基本上告诉你,这样是没有问题的。But,使用mvn package构建成jar文件,运行后报异常如下:

Resource下的文件是存在于jar这个文件里面,在磁盘上是没有真实路径存在的,它其实是位于jar内部的一个路径。所以通过ResourceUtils.getFile或者this.getClass().getResource("")方法无法正确获取文件。

有一种比较偷懒的做法:将文档放在项目外,应用可以读取到的一个固定目录。按正常的方式读取即可,但可维护性比较差,很容易被误操作丢失。

文本文件读取

这种情况下可以采用流的方式来读取文件,拿到文件流再进行相关的操作。如果你使用Spring框架的话,可以采用ClassPathResource来读取文件流,将文件读取成字符串才进行二次操作,比较适用于文本文件,如properties,txt,csv,SQL,json等,代码参考:

这类来帮助大家读取文件:

使用方式也是相当拿到一个文件,再去解析使用。参考代码如下:

非文本文件读取

更多的情况是读取非文本文件,比如xls,还是希望拿到一个文件,再去解析使用。参考代码如下:

拿到目标文件后,再按照正常的取法如ResourceUtils.getFile,读取即可ttps://stackoverflow.com/questions/25869428/classpath-resource-not-found-when-running-as-jar

基于SpringCloud的Microservices架构实战案例

基于SpringBoo返回搜狐,查看更多

的Web API快速开发基础框架

基于SpringBoot-Dubbo的微服务快速开发框架

如何从传统软件开发顺利过渡到互联网技术开发

怎么定位自己在团队里的角色

你的经历不一定都能变成经验

那些会阻碍程序员成长的细节[7]

30多岁挨踢人要转行的焦虑,是真的吗

如何快速的积累经验

学习新技术时你应当掌握的『最少必要知识』

责任编辑:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值