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

问题描述 投票:0回答:1

这个问题在这里已有答案:

Windows 7,x64,Java 11

如何读取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或我的代码中发生了什么?


我试过this

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
}

Other examples

并且this没有帮助

 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());
}
java java-11
1个回答
0
投票

I solved it!!!!

行家

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

重建项目。

mvn clean install
© www.soinside.com 2019 - 2024. All rights reserved.