gpt4 book ai didi

java - 如何加载相对于类包的文件?

转载 作者:行者123 更新时间:2023-11-30 06:11:00 25 4
gpt4 key购买 nike

我在名为 fixtures 的子目录中有文件 allDepartments.json,我想从 Fixture.java 类访问它。

enter image description here

这是我的 Fixture.java 代码:

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

public final class Fixture {
private static final String FIXTURES_PATH = "";
private final String fixture;

public Fixture(String fixtureName) throws IOException {
fixture = new String(Files.readAllBytes(Paths.get(FIXTURES_PATH + fixtureName)));
}

public final String getFixture() {
return fixture;
}
}

然而,每次他尝试访问该文件时,我都会得到一个java.nio.file.NoSuchFileException: allDepartments.json...

我听说过 getResource() 方法并尝试了所有可能的组合,但没有成功。

我需要它来为我的 JUnit 测试存储多行字符串。

我能做什么?

最佳答案

NIO.2 API不能用于读取有效项目资源的文件,即类路径中存在的文件。

在您的情况下,您有一个 Maven 项目和一个资源,您希望在应用程序的单元测试期间阅读这些资源。首先,这意味着该资源应放在 src/test/resources 下,以便 Maven 在测试期间自动将其添加到类路径中。其次,这意味着您不能使用 Files 实用程序来读取它。

您将需要求助于使用传统的 BufferedReader:

public Fixture(String fixtureName) throws IOException {
try (BufferedReader br = new BufferedReader(new InputStreamReader(Fixture.class.getResourceAsStream(FIXTURES_PATH + fixtureName)))) {
// do your thing with br.readLine();
}
}

请注意为 getResourceAsStream 提供的路径是相对于当前类的路径或绝对路径。如果资源位于 src/test/resources/folder/allDepartments.json 中,则有效路径为 /folder/allDepartments.json

关于java - 如何加载相对于类包的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34812341/

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