springboot读取文件,打成jar包后访问不到的解决
作者:WoddenFish 时间:2023-07-14 13:56:35
springboot读取文件,打成jar包后访问不到
最新开发出现一种情况,springboot打成jar包后读取不到文件,原因是打包之后,文件的虚拟路径是无效的,只能通过流去读取。
文件在resources下
public void test() {
List<String> names = new ArrayList<>();
InputStreamReader read = null;
try {
ClassPathResource resource = new ClassPathResource("name.txt");
InputStream inputStream = resource.getInputStream();
read = new InputStreamReader(inputStream, "utf-8");
BufferedReader bufferedReader = new BufferedReader(read);
String txt = null;
while ((txt = bufferedReader.readLine()) != null) {
if (StringUtils.isNotBlank(txt)) {
names.add(txt);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (read != null) {
try {
read.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
springboot打jar包后台无法访问静态文件夹
1.ResourceUtils
平常我们写spring boot 项目的时候偶尔会在后台用到classpath 底下的文件,一般我们都是这样写的
File file = ResourceUtils.getFile("classpath:static/image/image");
这样情况下本来是没啥问题的。但是用 打jar 包 运行以后就会找不到这个文件。
Resource下的文件是存在于jar这个文件里面,在磁盘上是没有真实路径存在的,它其实是位于jar内部的一个路径。所以通过ResourceUtils.getFile或者this.getClass().getResource("")方法无法正确获取文件。
对于这种情况。有时候会把项目文档放到项目外边,但是这样很容易把这些东西误删除掉。
2.ClassPathResource
ClassPathResource cpr = new ClassPathResource("static/image/image/kpg");
InputStream in = cpr.getInputStream();
3. ResourceLoader
public class ResourceRenderer {
public static InputStream resourceLoader(String fileFullPath) throws IOException {
ResourceLoader resourceLoader = new DefaultResourceLoader();
return resourceLoader.getResource(fileFullPath).getInputStream();
}
}
用法
InputStream in = ResourceRenderer.resourceLoader("classpath:static/image/image");
这样就完美的解决了jar包底下路径无法访问的问题。
来源:https://blog.csdn.net/WoddenFish/article/details/86161918
标签:springboot,读取文件,jar,访问
0
投稿
猜你喜欢
使用@pathvariable与@requestparam碰到的一些问题及解决
2023-11-27 16:30:34
Android手势密码的实现
2023-03-09 09:23:01
详解Android获取所有依赖库的几种方式
2023-12-13 05:41:51
Android远程服务编写和调用教程
2022-06-14 18:10:45
C#设置与获取环境变量的方法详解
2021-09-03 20:55:29
c#图片缩放图片剪切功能实现(等比缩放)
2022-08-17 04:46:13
SpringBoot2.3新特性优雅停机详解
2023-11-28 07:59:43
Java通俗易懂系列设计模式之建造者模式
2022-11-01 23:27:24
详解Java中类的加载与其初始化
2023-06-21 04:56:45
C# Assembly.Load案例详解
2021-11-06 03:20:33
Java之System.getProperty()的作用及使用说明
2023-05-18 12:34:51
一篇文章弄懂Java和Kotlin的泛型难点
2022-11-19 11:37:19
C#精确计算年龄的方法分析
2021-06-13 14:06:36
Java实现简单的迷宫游戏详解
2022-11-22 05:00:52
Java 十大排序算法之插入排序刨析
2021-12-07 02:48:54
Java泛型定义与用法实例详解
2023-11-25 11:50:28
改进c# 代码的五个技巧(二)
2023-01-09 08:57:56
Java中的final关键字使用方式
2023-01-16 15:04:25
elasticsearch节点的transport请求发送处理分析
2022-04-05 22:38:08
WPF自定义控件的实现
2021-07-06 02:34:11