【问题标题】:Java workspace and file pathJava 工作空间和文件路径
【发布时间】:2026-01-18 19:40:01
【问题描述】:

我有一个可能很容易解决的问题。 我的项目中有一个文件夹,并希望使用相对路径获取它:

new File("/folder")

这给了我FileNotFoundException

如果我这样尝试

new File("d:/workspace/project/folder")

有效

我怀疑它不起作用是因为: new File("").getAbsolutePath() 返回:D:\eclipse 所以不是工作区的路径。

是我做错了什么还是我需要在 eclipse 中更改一些设置

【问题讨论】:

  • 您可能希望您的程序将工作空间位置作为输入。在 Eclipse 中,您可以为 java 程序设置一个运行目标,并使用 Eclipse 预定义变量 ${workspace_loc} 来传递您的工作空间的位置。Eclipse 主菜单 -> 运行 -> 运行配置...

标签: java file relative-path absolute-path


【解决方案1】:

Don 指出您使用的是绝对路径。这就是问题所在。

默认情况下,Eclipse 中的工作目录是您执行的程序所在的项目路径。

通过显示此属性,您始终可以知道工作目录:

System.out.println(System.getProperty("user.dir"));

【讨论】:

    【解决方案2】:

    刚刚在 djna 建议的 Run Cofigurations 中找到了我的答案,但不是在环境选项卡中,而是在参数选项卡中。有一个工作目录部分,其中设置了 d:\eclipse,需要将其设置为 ${workspace_loc:myproject}

    【讨论】:

      【解决方案3】:
      new File("/folder")
      

      不是相对路径,而是绝对路径。 如果要访问相对路径,请使用

      new File("folder")
      

      new File("./folder")
      

      【讨论】:

      • 新的 File("folder") 给了我 D:\eclipse\folder 和新的 File("./folder") 给了我 D:\eclipse\.\folder
      • 这就是为什么您的 D:\eclipse 似乎是您的工作文件夹的原因。尝试像 djna 告诉你的那样设置 eclipse。但是 new File("/folder") 应该导致 C:\folder
      【解决方案4】:

      在运行配置中,您可以指定启动的工作目录。这可能在不同的 Eclipse 中有所不同,但对我来说:

      Run->Run Cofigurations ...
      Select Java Application, right Click New
      Environment Tab gives you a chance to specify the working directory
          Select Other, and then Workspace ... to specify a project in your workspace
      

      【讨论】:

        【解决方案5】:

        你可以试试这个吗?

        File file = new File("folder");
        String path = file.getAbsolutePath();
        FileInputStream fis = new FileInputStream(path);
        

        【讨论】:

          【解决方案6】:

          D:\eclipse 是您项目的根文件夹。如果您在同一工作区的D:\java 中创建另一个项目,new File("").getAbsolutePath() 将返回D:\java,因此这与您的工作区路径无关。

          如果你想在项目中创建一个文件夹,请使用.,例如:

          System.out.println(new File(".\\test").getAbsolutePath());
          

          【讨论】: