我之前写了一篇《SpringBoot项目打包成jar后读取文件的大坑,使用ClassPathResource获取classpath下文件失败》,发表在了我的博客和 CSDN 上。
很久没登陆 CSDN 了,今天登陆进来发现两个网友的留言,都说是用我的方式 亲测,获取不到。
那我就亲自再运行一遍,写个 Demo,亲自验证一下到底能不能使用 getInputStream 获取 Jar 包里的文件。
关键代码如下,获取整体项目请移步:https://github.com/renfei/demo/tree/master/spring/jar-read-file
@RequestMapping("/")
public void getImageTest(HttpServletResponse response) throws IOException {
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
Resource[] resources = resolver.getResources("image/WX20210312-225547.png");
Resource resource = resources[0];
try (InputStream input = resource.getInputStream()) {
response.setContentType("image/png");
int len = 0;
byte[] buffer = new byte[1024];
while ((len = input.read(buffer)) != -1) {
System.out.println("读取流,写入response输出流");
response.getOutputStream().write(buffer, 0, len);
}
}
}
各大视频平台我也开通了哦,我为了证明这个方法可行有效,录屏测试了全过程:
- 本站视频:https://www.renfei.net/video/3
- B站视频:https://www.bilibili.com/video/BV1wv411a75q
- Youtube:https://youtu.be/vyFQi7r2ZWo
微信视频号、抖音、西瓜视频等懒得贴链接了。