Java - java.io.File 与类路径

Java - java.io.File with Classpath

我需要 use/define 一个 java.io.File 变量类型来获取将作为参数发送到另一个方法的文件。

现在我有了相对路径:

File file = new File("C:/javaproject/src/main/resources/demo/test.txt");

我想像这样使用 ClassLoader 更改它:

ClassLoader.getSystemResource("/demo/test.txt");

但是我不能把它用到文件中,因为不是同一种类型。如果我使用 .toString() 它 returns NullPointerException:

java.lang.NullPointerException: null

当我用系统输出打印它时 return 同样,一个例外: System.out.println(ClassLoader.getSystemResource("demo/test.txt").toString());

文件夹和文件都存在。为什么会出现错误?

你可以这样做:

try {
    URL resource = getClass().getClassLoader().getResource("demo/test.txt");
    if (nonNull(resource)) {
        File file = new File(resource.toURI());
        // do something
    }
} catch (URISyntaxException e) {
    LOGGER.error("Error while reading file", e);
}

这个answer显示了ClassLoader.getSystemResourcegetClassLoader().getResource()

之间的区别