我想使用此实现计算放入源包的文件的路径:
URL pathSource = this.getClass().getResource("saveItem.xml");
当我尝试创建一个新文件时,如下面的代码:
File xmlFile = new File(pathSource.toString());
我尝试使用它来创建这样的文档:
Document document = builder.parse(xmlFile);
这给了我 java.io.FileNotFoundException 。 如何在不进行硬编码的情况下计算文件路径?
PS:我已经使用过pathSource.getPath(),但它也没有用。 我想使用类似的实现:
FXMLLoader loader = new FXMLLoader(getClass().getResource("FXMLDocument.fxml"));
答案 0 :(得分:2)
您无法将JAR文件中的资源作为File
实例进行访问。您只能获得InputStream
。
因此,以下一行
File xmlFile = new File(pathSource.toString());
无法正常工作,如果稍后尝试阅读,则会抛出FileNotFoundException
。
假设您尝试使用DocumentBuilder
解析XML文件,可以使用documentation方法:
try (InputStream stream = this.getClass().getResourceAsStream("saveItem.xml")) {
Document document = builder.parse(stream);
}
答案 1 :(得分:0)
简短回答 - saveItem.xml不在类路径中。 如果它是Web应用程序,则可以将文件添加到WEB-INF / classes文件夹中。
编辑:
也请尝试this.getClass().getResourceAsStream()
。
答案 2 :(得分:0)
getClass().getResource("saveItem.xml");
在getClass()
返回的类中查找同一个包中的文件(当您查看文件系统时是目录)。
确保文件在那里。还要确保在运行代码时它确实在那里,源文件夹与放置已编译类文件的target
或bin
文件夹之间存在差异。< / p>
同时检查pathSource.toString()
包含的内容。