eri*_*cso 5 java filenotfoundexception xml-parsing
我正在用Java编写一个程序,我从XML文件中读取数据并解析它.该文件将导入到项目的src目录中名为"Resources"的文件夹中.我正在使用Eclipse.当我运行该程序时,我收到以下错误:
java.io.FileNotFoundException: /Users/thechiman/Dropbox/introcs/PSU SOC Crawler/resources/majors_xml_db.xml (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at java.io.FileInputStream.<init>(FileInputStream.java:66)
...
Run Code Online (Sandbox Code Playgroud)
相关代码在这里:
private void parseXML() {
//Get a factory
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
//Use factory to get a new DocumentBuilder
DocumentBuilder db = dbf.newDocumentBuilder();
//Parse the XML file, get DOM representation
dom = db.parse("resources/majors_xml_db.xml");
} catch(ParserConfigurationException pce) {
pce.printStackTrace();
} catch(SAXException se) {
se.printStackTrace();
} catch(IOException ioe) {
ioe.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么我在文件存在时收到FileNotFoundException.谢谢您的帮助.
使用时DocumentBuilder.parse(String),参数被解释为URI,在这种情况下,它将是一个相对URI(您给它的字符串不是"完整"URI).什么是相对要有点暧昧在这一点上,而不需要您设置的信息.运行时将把它解释为相对于某些东西,但这里不清楚它是什么.
通过使用其他parse方法之一,您可以获得更可靠的结果,例如parse(File)或parse(InputStream).在每种情况下,您要求它解析的内容都没有歧义.
如果您决定首先构造一个File对象(以便parse稍后传递),那么您有一个更易于管理的问题,即确保该文件存在(使用File.exists()等等).如果你无法做到那么远,那么你的问题不DocumentBuilder在于DOM,而在于基本的文件路径.请记住,如果您使用相对文件路径(例如new File("resources/majors_xml_db.xml")),那么这将相对于流程的工作目录进行解析.如果它的工作与否取决于你如何启动你的程序.
| 归档时间: |
|
| 查看次数: |
7885 次 |
| 最近记录: |