问题描述
我需要使用/定义一个java.io.File
变量类型来获取一个文件,该文件将作为参数发送到另一个方法。
现在我有了相对路径:
File file = new File("C:/javaproject/src/main/resources/demo/test.txt");
我想使用ClassLoader
更改它,如下所示:
ClassLoader.getSystemResource("/demo/test.txt");
但是我不能将其用于File中,因为它不是同一类型。
如果我使用.toString()
则返回NullPointerException:
java.lang.NullPointerException: null
当我使用系统输出打印它时,返回的结果是一个例外:System.out.println(ClassLoader.getSystemResource(“ demo / test.txt”)。toString());
文件夹和文件都存在。 为什么会出错?
1楼
你可以这样做:
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);
}
此显示了ClassLoader.getSystemResource
和getClassLoader().getResource()
之间的区别