最近在项目中涉及到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下文件的几种方式相关推荐

  1. POI读取word文件,(支持HSSF和XSSF两种方式)

    POI读取word文件,(支持HSSF和XSSF两种方式) 参考:HSSF,XSSF,SXSSF三种方式 1.引用maven(版本必须一致) <dependency><groupId ...

  2. asp.net中读取数据库中的数据可以使用DataReader和DataSet 2种方式(初学者望大家不要笑我)...

    在asp.net中,读取数据库中的数据可以使用DataReader和DataSet 2种方式, 两者的差异如下:     使用Dataset对象读取数据大致需要以下5个步骤:     (1)建立数据库 ...

  3. TextView 添加下划线的几种方式

    资料 TextView 添加下划线的几种方式 Android TextView 添加下划线的几种方式

  4. 读取linux分区工具,Windows XP下直接读取Linux ext4分区文件工具

    用了好久的Linux, Firefox的插件都放在Linux的ext4分区上. 想要在Windows XP中读取ext4分区的文件,接着就有了一段惊心动魄的经历. 首先是到google上搜索" ...

  5. springboot忽略证书_SpringBoot获取resource下证书失败

    1.第一种失败的情况: 本来使用Spring的上下文容器获取文件,将证书文件放在resource下,编译后获取文件会出现报错 java.security.spec.InvalidKeySpecExce ...

  6. linux 检查权限,检查目录下 文件的权限-linux shell脚本,

    检查目录下 文件的权限-linux shell脚本, #!/bin/bash #History: #2019/07/23    Fsq #This Program will check Permiss ...

  7. linux移动文件 rf参数_linux下文件的复制、移动与删除

    查看centOS 版本     cat /etc/redhat-release 1,复制粘贴文件 cp  [选项]  源文件或目录  目标文件或目录 2,剪切粘贴文件 mv [选项]  源文件或目录 ...

  8. Linux脚本统计指定目录下文件和文件夹数量

    要求:提醒用户输入一个绝对路径:然后请你统计输入的路径目录下有多少个文件,多少个文件夹? #!/bin/bash#提醒用户输入需要统计的文件夹的路径 read -p "请输入需要统计的文件夹 ...

  9. linux移动文件 rf参数_linux下文件的复制、移动与删除命令为:cp,mv,rm

    查看centOS 版本     cat /etc/redhat-release 1,复制粘贴文件 cp  [选项]  源文件或目录  目标文件或目录 2,剪切粘贴文件 mv [选项]  源文件或目录 ...

最新文章

  1. PAT (Basic Level) Practice (中文)1007 素数对猜想 (20 分)
  2. 触发器批量更新 用游标,一个一个处理
  3. 即时通讯飞鸽传书民意soft需求
  4. Python2读取Excel文件时候文件名称是中文的时候处理
  5. python爬取内容为空怎么剔除_用scrapy爬取网站内容时,如何忽略某些内容为空的值;...
  6. 梅花易数C语言实现(六十四卦卦辞用的是python)用了python
  7. mysql命令执行cmd命令_mysql cmd常用命令
  8. 我在b站学数据库 (九):函数
  9. Linux之网络管理
  10. 绘制图形与3D增强技巧(三)----三角形图元TRANGLE
  11. css根据某个角旋转,设置旋转中心点
  12. go time.after
  13. 如何利用AI技术在零售业做产品创新——京东无人超市的成长之路
  14. js中sort()字母排序和自定义多列排序
  15. 【分享】QY-IMX8M主板简介
  16. 区块链推动食品安全走向新时代
  17. ORA-01653: unable to extend table SYS.AUD$ by 8192 in tablespace SYSTEM系统表空间满
  18. 小白日记10:kali渗透测试之端口扫描-UDP、TCP、僵尸扫描、隐蔽扫描
  19. 质量度量之 “三级指标体系”
  20. 2020英方软件产品发布会:Data+ 为用户提供个性化服务

热门文章

  1. 美团爱问Kafka?太真实了!
  2. 它又来了!Fastjson 被发现其用于安全控制的开关autotype限制可被绕过...你方了没?...
  3. 面试官:说说微信和淘宝扫码登录背后的实现原理?
  4. 都在说微服务,那么微服务的反模式和陷阱是什么(二)
  5. 怎么用feign远程调用别人的接口_spring cloud-openFeign声明式远程调用
  6. linux php 升级5.3,Linux php5.2.10升级到PHP5.3.29
  7. 天籁obd接口针脚定义_OBD协议介绍
  8. 遮挡目标检测优化笔记
  9. 轻量人脸检测,5个关键点
  10. penalized_tanh可视化