File file = ResourceUtils.getFile("classpath:templates/工卡打印模板.html");
默认读取的是static下的文件 我主要是用于提供下载文件为springBoot 项目
占坑一年扩展两种情况
一种是普通的web项目,像用Tomcat容器,项目访问的时候,实际是去访问文件夹,而不是jar或者war包
获取路径的方法this.getClass().getResource("/")+fileName,获取流的方法this.getClass().getResourceAsStream(failName);都可以使用
上方写的工具类
import org.springframework.util.ResourceUtils;
File file= ResourceUtils.getFile("classpath:test.txt");
或者
ClassPathResource classPathResource = new ClassPathResource("test.txt");
获取文件:classPathResource .getFile();
获取文件流:classPathResource .getInputStream();
第二种是内嵌web容器,其特点是只有一个jar文件,在容器启动后不会解压缩,项目实际访问时jar包(典型的springboot项目)或者war包
这种最容易遇坑,最大的坑就是,用第一种方式读取,在idea,本地调试,完美运行,到linux环境下,只能一首凉凉送给自己
第一次用获取路径的方法this.getClass().getResource("/")+fileName,获取流的方法this.getClass().getResourceAsStream(failName);在本地运行时,能找到到,打印出来的路径,也没有,是我的的工作目录,项目目录,但是在target目录下。线上内嵌的工程,我们只会放一个jar文件上去,我理解是jar里面的路径是获取不到的,jar是封闭性东西吧,不像文件夹,总不能c:/home/xx.jar/file.txt,这种路径我。。。。别浪,稳点。所以说到这我已经吧上帝的真理告诉你了,不要告诉别人哦,这是个秘密,好,大哥我总结一点,读取jar里面的文件,我们只能用流去读取,不能用file,文件肯定要牵扯路径,jar那个路径刚刚我已经拼出来了 目前已知能解决的两种办法
jar里面文件读取方式:
ClassPathResource classPathResource = new ClassPathResource("test.txt");
获取文件流:classPathResource .getInputStream();
有用麻烦点个赞 给小弟补充动力