springboot读取linux文件_SpringBoot读取Resource下文件的几种方式
最近在项目中涉及到Excle的导入功能,通常是我们定义完模板供用户下载,用户按照模板填写完后上传;这里待下载模板位置为resource/excelTemplate/test.xlsx,尝试了四种读取方式,并且测试了四种读取方式分别的windows开发环境下(IDE中)读取和生产环境(linux下jar包运行读取)。
第一种:
第三种
InputStream inputStream = this.getClass().getResourceAsStream("/excleTemplate/test.xlsx");
第四种
经测试:
前三种方法在开发环境(IDE中)和生产环境(linux部署成jar包)都可以读取到,第四种只有开发环境 时可以读取到,生产环境读取失败。
推测主要原因是springboot内置tomcat,打包后是一个jar包,无法直接读取jar包中的文件,读取只能通过类加载器读取。
前三种都可以读取到其实殊途同归,直接查看底层代码都是通过类加载器读取文件流,类加载器可以读取jar包中的编译后的class文件,当然也是可以读取jar包中的excle模板了。
用解压软件打开jar包查看结果如下:
其中cst文件中是编译后class文件存放位置,excleTemplate是模板存放位置,类加载器读取的是cst下class文件,同样可以读取excleTemplate下的模板的文件流了。
所以总结一下:假如文件是在jar包中,读取方式应当使用基于类加载器读取文件流的方式,比如前三种方法;使用基于java中File方式的读取,在jar包情况下是读取不到的,比方说第四种。
感觉对你有帮助,就点个赞吧…
springboot读取linux文件_SpringBoot读取Resource下文件的几种方式相关推荐
- POI读取word文件,(支持HSSF和XSSF两种方式)
POI读取word文件,(支持HSSF和XSSF两种方式) 参考:HSSF,XSSF,SXSSF三种方式 1.引用maven(版本必须一致) <dependency><groupId ...
- asp.net中读取数据库中的数据可以使用DataReader和DataSet 2种方式(初学者望大家不要笑我)...
在asp.net中,读取数据库中的数据可以使用DataReader和DataSet 2种方式, 两者的差异如下: 使用Dataset对象读取数据大致需要以下5个步骤: (1)建立数据库 ...
- TextView 添加下划线的几种方式
资料 TextView 添加下划线的几种方式 Android TextView 添加下划线的几种方式
- 读取linux分区工具,Windows XP下直接读取Linux ext4分区文件工具
用了好久的Linux, Firefox的插件都放在Linux的ext4分区上. 想要在Windows XP中读取ext4分区的文件,接着就有了一段惊心动魄的经历. 首先是到google上搜索" ...
- springboot忽略证书_SpringBoot获取resource下证书失败
1.第一种失败的情况: 本来使用Spring的上下文容器获取文件,将证书文件放在resource下,编译后获取文件会出现报错 java.security.spec.InvalidKeySpecExce ...
- linux 检查权限,检查目录下 文件的权限-linux shell脚本,
检查目录下 文件的权限-linux shell脚本, #!/bin/bash #History: #2019/07/23 Fsq #This Program will check Permiss ...
- linux移动文件 rf参数_linux下文件的复制、移动与删除
查看centOS 版本 cat /etc/redhat-release 1,复制粘贴文件 cp [选项] 源文件或目录 目标文件或目录 2,剪切粘贴文件 mv [选项] 源文件或目录 ...
- Linux脚本统计指定目录下文件和文件夹数量
要求:提醒用户输入一个绝对路径:然后请你统计输入的路径目录下有多少个文件,多少个文件夹? #!/bin/bash#提醒用户输入需要统计的文件夹的路径 read -p "请输入需要统计的文件夹 ...
- linux移动文件 rf参数_linux下文件的复制、移动与删除命令为:cp,mv,rm
查看centOS 版本 cat /etc/redhat-release 1,复制粘贴文件 cp [选项] 源文件或目录 目标文件或目录 2,剪切粘贴文件 mv [选项] 源文件或目录 ...
最新文章
- PAT (Basic Level) Practice (中文)1007 素数对猜想 (20 分)
- 触发器批量更新 用游标,一个一个处理
- 即时通讯飞鸽传书民意soft需求
- Python2读取Excel文件时候文件名称是中文的时候处理
- python爬取内容为空怎么剔除_用scrapy爬取网站内容时,如何忽略某些内容为空的值;...
- 梅花易数C语言实现(六十四卦卦辞用的是python)用了python
- mysql命令执行cmd命令_mysql cmd常用命令
- 我在b站学数据库 (九):函数
- Linux之网络管理
- 绘制图形与3D增强技巧(三)----三角形图元TRANGLE
- css根据某个角旋转,设置旋转中心点
- go time.after
- 如何利用AI技术在零售业做产品创新——京东无人超市的成长之路
- js中sort()字母排序和自定义多列排序
- 【分享】QY-IMX8M主板简介
- 区块链推动食品安全走向新时代
- ORA-01653: unable to extend table SYS.AUD$ by 8192 in tablespace SYSTEM系统表空间满
- 小白日记10:kali渗透测试之端口扫描-UDP、TCP、僵尸扫描、隐蔽扫描
- 质量度量之 “三级指标体系”
- 2020英方软件产品发布会:Data+ 为用户提供个性化服务
热门文章
- 美团爱问Kafka?太真实了!
- 它又来了!Fastjson 被发现其用于安全控制的开关autotype限制可被绕过...你方了没?...
- 面试官:说说微信和淘宝扫码登录背后的实现原理?
- 都在说微服务,那么微服务的反模式和陷阱是什么(二)
- 怎么用feign远程调用别人的接口_spring cloud-openFeign声明式远程调用
- linux php 升级5.3,Linux php5.2.10升级到PHP5.3.29
- 天籁obd接口针脚定义_OBD协议介绍
- 遮挡目标检测优化笔记
- 轻量人脸检测,5个关键点
- penalized_tanh可视化