所以我只有一个包含xml文件的目录,我正在尝试迭代它。我遇到的问题是,每当我尝试解析文件时,我都会收到fileNotFound异常。
代码:
public static void main(String[] args) {
File dir = new File(".\\xmlFileGoHere");
File[] directoryListing = dir.listFiles();
for(File fileName : directoryListing) {
String path = fileName.getAbsolutePath();
Document xmlDoc = getDocument(path);
}
}
private static Document getDocument(String docString) {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setIgnoringComments(true);
factory.setValidating(true);
DocumentBuilder builder = factory.newDocumentBuilder();
return builder.parse(new InputSource(docString));
}
catch(Exception e) {
e.printStackTrace();
}
return null;
}
}
首先,我发送的路径不正确,并检查我是否将代码更改为:
public static void main(String[] args) {
File dir = new File(".\\xmlFileGoHere");
File[] directoryListing = dir.listFiles();
for(File fileName : directoryListing) {
String path = fileName.getAbsolutePath();
File file = new File(path);
System.out.println(file.exists());
}
}
上面的代码总是返回true。
我在Windows上,所以我没有考虑权限。
我做错了什么?
答案 0 :(得分:0)
您需要传入URI,而不是InputSource
构造函数的文件路径,因此请将getDocument(path)
更改为getDocument(fileName.toURI().toString())
。
作为替代方案,因为您已经File
并且parse
重载了File
,您可以将签名更改为private static Document getDocument(File input)
,将代码更改为{ {1}}。