当前位置: 首页 > 知识库问答 >
问题:

从资源文件夹读取文件,InputStream为null[重复]

柴磊
2023-03-14

Windows 7, x64,Java11

如何读取main中resources文件夹中的文件。

    ClassLoader classloader = Thread.currentThread().getContextClassLoader();

    // Input stream is null.
    InputStream is = App.class.getResourceAsStream(filename);
    BufferedReader br = new BufferedReader(new InputStreamReader(is));
    return br.lines().collect(Collectors.toList());

我在测试/资源方面也有类似的问题。

private static List<String> readLines(final String filename) {
    try (final InputStreamReader isr = new FileReader(getFileFromResource(filename));
         final BufferedReader br = new BufferedReader(isr)) {
        return br.lines().collect(Collectors.toList());
    } catch (IOException e) {
        throw new RuntimeException(String.format("Failed to read file: %s", filename), e);
    }
}

private static File getFileFromResource(final String filename) {

    ///////// App.class.getResource is NULL

    final URL url = App.class.getClassLoader().getResource(filename);
    if (url == null) {
        throw new RuntimeException(String.format("Failed to read resource %s from resources folder.", filename));
    }
    return new File(url.getFile());
}

但对测试/资源有用的东西对java/资源不起作用。

Java-11或我的代码中发生了什么?

我试过这个

URL url = ClassLoaderUtil.getResource("test.csv", YourCallingClass.class);
Path path = Paths.get(url.toURI());
List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);

还有这个

// java.io.InputStream
InputStream inputStream = ClassLoaderUtil.getResourceAsStream("test.csv", YourCallingClass.class);
InputStreamReader streamReader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);
BufferedReader reader = new BufferedReader(streamReader);

for (String line; (line = reader.readLine()) != null;) {
    // Process line
}

其他例子

这也没用

 private List<String> readLines(String filename) {
    // InputStream is null
    InputStream is = getClass().getClassLoader()
            .getResourceAsStream(filename);
    BufferedReader br = new BufferedReader(new InputStreamReader(is));
    return br.lines().collect(Collectors.toList());
}

共有1个答案

白泽语
2023-03-14

我解决了!!!!

专家

我使用maven构建我的项目。在我将文件添加到资源后,它没有转到目标目录。

重建项目。

mvn clean install
 类似资料:
  • 我有一个名为的项目,它有以下结构: 所以这两个文件的路径是: 我想读测试文件。TestDataProvider中的json。JAVA 我曾经用过 我看到从URL res=getClass(). getClassLoader(). getResources("testfile.json")返回; 有人能帮我吗?

  • 如何从资源文件夹的子文件夹中读取文件。 我在资源文件夹中有一些json文件,例如: 现在我想在我的课堂上读到这个 这是我正在尝试的,但是失败了。 不起作用,那么我正在尝试: 这两样东西都不工作。

  • 问题内容: 我正在使用Spring Boot和。我正在尝试从文件夹读取一个文件。我尝试了几种不同的方法,但无法正常工作。这是我的代码。 这是文件的位置。 在这里,我可以看到文件夹中的文件。 但是,当我运行代码时,出现以下错误。 我在代码中做错了什么? 问题答案: 在花费大量时间尝试解决此问题之后,终于找到了可行的解决方案。该解决方案利用了Spring的ResourceUtils。也应该适用于jso

  • 我在中有一个JSON文件,我试图用以下方式读取该文件: 但是,InputStream为空。 这是我传递的文件路径: 我做错了什么?

  • 如何使用URI从资源文件夹的子文件夹中读取文件 资源文件夹中有一些json文件,如: 现在我想在我的课堂上读这个 这是我正在尝试的。 我的东西工作正常,但我遇到的问题是我不想使用< code>toURI,因为它会失败。

  • 我想读一个属性文件,如下所示: 但当我尝试这样做时,我会出现一个错误: 线程“main”java中出现异常。lang.NullPointerException:inStream参数在java中为null。base/java。util。物体。java上的requirennoull(Objects.java:246)。base/java。util。财产。在majorbot加载(Properties.j