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

孤街醉人 提交于 2019-12-08 12:21:21

问题


I have an XML file in a folder within my Java project, and I'd like to get its absolute path, so I can load it as a File in order to parse it(DOM). Instead of using an absolute/relative path, I want to specify only the file name, and get the absolute path after that. I tried to do this in a few different ways, but there is always a folder name missing from the path I get.

I get:

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

instead of:

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());

How can I get the correct path, that includes that Folder1?


回答1:


Reading your question (your project are in workspace directory) I suppose you're talking of a project in Eclipse.

Well the default directory where your app run into Eclipse is right the base dir of your project.

So if you run something like this in your main:

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

You should see all the files and directory that are in your project.

So if what you want is just the absolute path to your project run:

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

If you want open the resource Input.xml specifying only the name, I suggest to move all the files you need in a directory and run a method like this:

  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;
  }


来源:https://stackoverflow.com/questions/43249167/java-how-to-get-the-correct-absolute-path-of-a-file-within-a-project

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!