文件可以';因为java可以';我找不到

文件可以';因为java可以';我找不到,java,xml,parsing,Java,Xml,Parsing,我正在尝试解析一个xml文件,到目前为止,这就是我所写的 public class XMLTest { public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException { File xmlFile = new File("D:\\workspace\\sudoku baby\\sudoku.xml"); DocumentBuilderFac

我正在尝试解析一个xml文件,到目前为止,这就是我所写的

public class XMLTest {

public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
    File xmlFile = new File("D:\\workspace\\sudoku baby\\sudoku.xml");
    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
    Document doc = dBuilder.parse(xmlFile);
}
它不断地抛出文件未找到异常,就像这样

Exception in thread "main" java.io.FileNotFoundException: D:\workspace\sudoku baby\sudoku.xml (The system cannot find the file specified)
at java.base/java.io.FileInputStream.open0(Native Method)
at java.base/java.io.FileInputStream.open(FileInputStream.java:213)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:155)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:110)
at java.base/sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:86)
at java.base/sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:184)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:654)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:150)
at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:860)
at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:824)
at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at java.xml/com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:246)
at java.xml/com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339)
at java.xml/javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:206)
at testingXML.XMLTest.main(XMLTest.java:14)
线程“main”java.io.FileNotFoundException中的异常:D:\workspace\sudoku baby\sudoku.xml(系统找不到指定的文件) 位于java.base/java.io.FileInputStream.open0(本机方法) 位于java.base/java.io.FileInputStream.open(FileInputStream.java:213) 位于java.base/java.io.FileInputStream。(FileInputStream.java:155) 位于java.base/java.io.FileInputStream。(FileInputStream.java:110) 位于java.base/sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:86) 位于java.base/sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:184) 位于java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:654) 位于java.xml/com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:150) 位于java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:860) 位于java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:824) 位于java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) 位于java.xml/com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:246) 位于java.xml/com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339) 位于java.xml/javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:206) 位于testingXML.XMLTest.main(XMLTest.java:14) `
我已经确定它是正确的文件路径,经过一些测试,它可以找到文件。当我试图解析它时会发生错误。我不确定这里的问题到底是什么,如果有人能指出或帮助,那就太好了。

请尝试以下代码:

File xmlFile = new File(Paths.get("D:","workspace", "sudoku baby", "sudoku.xml").toString());

错误消息中的路径与源代码中的路径不同。确保您正在运行您认为正在运行的代码,例如删除所有编译的代码(.class文件)。错误出现在日志中提到的testingXML.Employees类中,而不是XML测试类中。该输出看起来不像来自该代码
“D:\\workspace\\sudoku baby\\sudoku.xml”
vs.
D:\Users\mtsoy\staff.xml
路径中有一个空格“sudoku baby”这往往会造成问题次数有些人怀疑空格,也可能对D:的权限提出疑问。只需通过其他途径进行测试。