Java - 如何获取项目中文件的正确绝对路径

Java - How to get the correct absolute path of a file within a project

我的 Java 项目中的一个文件夹中有一个 XML 文件,我想获取它的绝对路径,这样我就可以将它作为文件加载以便解析它(DOM)。我不想使用 absolute/relative 路径,而是只想指定文件名,然后获取绝对路径。我尝试用几种不同的方式来做到这一点,但我得到的路径中总是缺少一个文件夹名称。

我得到:

C:\Users\user\workspace\projectName\Input.xml<br>

而不是:

C:\Users\user\workspace\projectName\**Folder1**\Input.xml

-

File input = new File(project.getFile("Input.xml").getLocation().toString());`
File input = new File(project.getFile("Input.xml").getRawLocation().makeAbsolute().toString());
File input = new File(project.getFile("Input.xml").getLocationURI().getRawPath().toString());
File input = new File(project.getFile("Input.xml").getFullPath().toFile().getAbsolutePath());

如何获得正确的路径,包括 Folder1

阅读你的问题(你的项目在工作区目录中)我想你是在谈论 Eclipse 中的一个项目。

好吧,你的应用 运行 进入 Eclipse 的默认目录就是你项目的基本目录。

所以如果你 运行 在你的主目录中有这样的东西:

Files.newDirectoryStream(Paths.get("."))
     .forEach(path -> {
       System.out.println(path);
       System.out.println(path.toFile().getAbsolutePath());
     });

您应该会看到项目中的所有文件和目录。

所以如果你想要的只是项目的绝对路径运行:

System.out.println(Paths.get(".").toFile().getAbsolutePath());

如果你想打开资源 Input.xml 仅指定名称,我建议将你需要的所有文件移动到一个目录中,运行 方法如下:

  public static File getFileByName(String name, String path) throws IOException {
    ArrayList<File> files = new ArrayList<>();
    Files.newDirectoryStream(Paths.get(path))
         .forEach(p -> {
           if (p.getFileName()
                   .equals(name))
             files.add(p.toFile());
         });
    return files.size() > 0 ? files.get(0) : null;
  }