当前位置:  开发笔记 > 编程语言 > 正文

Spring Boot - 使用ResourceLoader读取文本文件

如何解决《SpringBoot-使用ResourceLoader读取文本文件》经验,为你挑选了2个好方法。

我正在尝试使用Spring资源加载器读取文本文件,如下所示:

Resource resource  = resourceLoader.getResource("classpath:\\static\\Sample.txt");

该文件位于我的Spring启动项目中: 在此输入图像描述

它在eclipse中运行应用程序时工作正常,但是当我打包应用程序然后使用java -jar运行它时,我得到文件未找到异常:

java.io.FileNotFoundException: class path resource [static/Sample.txt] cannot be resolved to absolute file path because it does not reside in the
 file system: jar:file:/C:/workspace-test/XXX/target/XXX-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/static/Sample.txt

我解压缩了Sample所在的Jar文件:XXX-0.0.1-SNAPSHOT\BOOT-INF\classes\static\Sample.txt

有谁可以帮助我吗 ?

提前致谢!



1> 小智..:

我已经检查了你的代码.如果你想在Spring Boot JAR中从classpath加载一个文件,那么你必须使用resource.getInputStream()而不是resource.getFile().如果你尝试使用resource.getFile( )您将收到错误,因为Spring尝试访问文件系统路径,但它无法访问JAR中的路径.

详情如下:

https://smarterco.de/java-load-file-classpath-spring-boot/



2> Liping Huang..:

请试试 resourceLoader.getResource("classpath:static/Sample.txt");

运行时使用此代码 java -jar XXXX.jar

在此输入图像描述

------更新------

完成你的代码之后,问题是你试图通过FileInputStream它读取文件但实际上它在jar文件中.

但实际上你得到的就是org.springframework.core.io.Resource这样意味着你得到了InputStream,所以你可以这样做new BufferedReader(new InputStreamReader(resource.getInputStream())).readLine();

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有