java - 系统找不到指定的文件,但文件存在

标签 java java-io

我正在尝试操作名为 Test.XML 的 XML 文件。

我可以在我的文件夹中看到该文件并且可以打开它。 代码:

DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();            
domFactory.setIgnoringComments(true);
DocumentBuilder builder = domFactory.newDocumentBuilder();
Document doc = builder.parse(new File("MyFolder\Test.xml"));

我收到此错误:

java.io.FileNotFoundException: C:\MyFolder\Test.xml (The system cannot find the file specified)

为什么代码无法打开/读取我的文件,但其他程序(如 Notepad++)可以这样做?

***注意:文件的真实名称是“Use-cases\testSuitesA_E_1002+${user}3_12022016+${date}2_2.5.xml”。

最佳答案

请将您的代码修改为:

ClassLoader classLoader = ClassLoader.getSystemClassLoader();
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setIgnoringComments(true);
DocumentBuilder builder = domFactory.newDocumentBuilder();
Document doc = builder.parse(new File(classLoader.getResource("MyFolder/Test.xml").getPath()));
System.out.println(doc.getDocumentElement());

要运行此代码,请为 .class 文件构建项目。 ClassLoader 需要有 .class 文件。否则,它将无法从类路径读取文件夹或文件。

注意:

  1. new File("MyFolder\Test.xml") - 这将不起作用,因为您没有提供绝对路径。您必须使用类加载器从类路径获取文件(在这种情况下,您不必提及完整路径)。类加载器为您带来完整的绝对路径。请记住:java.nio.File 需要绝对路径才能工作。

  2. 如果您想从任意位置读取文件,则必须指定其完整路径。(假设您正在尝试访问外部文件)

关于java - 系统找不到指定的文件,但文件存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54929686/

相关文章:

java - 如何将随机对象放入堆栈而不使对象变成 DeferredElementImpl?

java - 奇怪的 FileInputStream/Data FileInputStream 行为 : seek()ing to odd positions

java - Java listFiles() 默认按什么顺序读取目录中的文件?

java - 扫描二维码拍照

java - 在sdk中使用Twilio Java Message类而不依赖Twilio单例的方法

java - 为什么 Gson 不使用嵌套转义 JSON 字符串解析我的文档?

Linux 上的 Java 套接字和多个传出接口(interface)

java - 无法导入 import StandardCopyOption

Java.io.File 没有按应有的方式删除 File

java - 在 Java 中读取文件(使用 IDE)