SpringBoot读取Resource下文件的四种方式

SpringBoot读取Resource下文件的四种方式

1、

ClassPathResource classPathResource = new ClassPathResource("/static/image/a.jpg");
InputStream inputStream =classPathResource.getInputStream();

2、

InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("/static/image/a.jpg");

3、

InputStream inputStream = this.getClass().getResourceAsStream("/static/image/a.jpg");

4、

File file = ResourceUtils.getFile("classpath:/static/image/a.jpg");
InputStream inputStream = new FileInputStream(file);

前三种方法在开发环境(IDE中)和生产环境(linux部署成jar包)都可以读取到,第四种只有开发环境时可以读取到,打成jar包就不行。

主要原因是springboot内置tomcat,打包后是一个jar包,因此通过文件读取获取流的方式行不通,因为无法直接读取压缩包中的文件,读取只能通过流的方式读取。

前三种都可以,直接查看底层代码都是通过类加载器读取文件流,类加载器可以读取jar包中的编译后的class文件,当然也是可以读取jar包中的文件流了。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43803285/article/details/118544585