gpt4 book ai didi

spring-boot - 无法从 Spring Boot jar 中读取文本文件

转载 作者:行者123 更新时间:2023-12-03 23:37:59 24 4
gpt4 key购买 nike

我正在尝试读取我的 Spring 引导控制台应用程序的资源文件夹中的文件,但我收到文件未找到异常。

这是我的pom

<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
</resource>

这里是个异常(exception):

java.io.FileNotFoundException: class path resource [9.txt] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/Users/abc/Documents/workspace-sts-3.8.4.RELEASE/xyz/target/xyz-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/9.txt

我打开了 xyz-0.0.1-SNAPSHOT.jar 文件,9.txt 位于 BOOT-INF/classes 文件夹中。

谢谢,-dj

最佳答案

这是 Spring Boot,让我们使用 ClassPathResource

@Component
public class MyBean {
@Value("9.txt")
private ClassPathResource resource;

@PostConstruct
public void init() throws IOException {
Files.lines(resource.getFile().toPath(), StandardCharsets.UTF_8)
.forEach(System.out::println);
}
}

更新:ClassPathResource如果类路径资源驻留在文件系统中,则支持解析为 java.io.File,但不支持 JAR 中的资源,最好使用这种方式

@Component
public class MyBean {
@Value("9.txt")
private ClassPathResource resource;

@PostConstruct
public void init() throws IOException {
try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(resource.getInputStream(), StandardCharsets.UTF_8))) {
bufferedReader.lines()
.forEach(System.out::println);
}
}
}

关于spring-boot - 无法从 Spring Boot jar 中读取文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43864911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com