【问题标题】:Trying to use Java file.getAbsolutePath() to get the absolute path of a file尝试使用 Java file.getAbsolutePath() 来获取文件的绝对路径
【发布时间】:2014-08-03 19:22:25
【问题描述】:

我正在做一个简单的项目,我正在尝试获取文件的绝对路径。这就是我正在尝试的:

String s = "file.txt";
System.out.println(new File(s).getAbsoluteFile().getAbsolutePath());

输出是:

C:\Users\Marcello\Desktop\Java Workspace\Simple Project\file.txt

其中“简单项目”是代码所在项目的名称。

但是输出应该是:

C:\Users\Marcello\Desktop\file.txt

那是我创建.txt 文件的地方。

我还尝试了file.getCanonicalFile() 和“file.getCanonicalPath()”。我也有同样的问题。 在这个项目中,我使用的是文本文件,但我希望它也可以与文件夹一起使用。因此,如果有人也知道文件夹的解决方案,我想看看。

对不起,我的英语不是我的母语,提前谢谢。


编辑:

我认为绝对路径应该是:

C:\Users\Marcello\Desktop\file.txt

因为我通过右键单击桌面创建了.txt 文件.... 这是我的桌面截图:

【问题讨论】:

  • 为什么你认为它应该在你的/Desktop 中?如果您在C:/random/why/not/here 中创建了一个名为file.txt 的文件怎么办?
  • 实际上,如果路径确实是您认为应该的路径,您的程序在从 Eclipse 执行时会抛出 FileNotFoundException。我认为显示的路径无疑是正确的。

标签: java eclipse file file-io


【解决方案1】:

文件不是一个实际的文件,它只是对可能存在也可能不存在的文件路径的引用。您在桌面上创建的文件与您在 Java 中创建的 File 对象无关。输出告诉您,不是您预期的文件在哪里,而是在您尝试打开文件时 File 对象的引用将去哪里寻找它。

要在未知位置找到文件的实际路径,您需要搜索它,如“Recursively list files in Java”。

【讨论】:

    【解决方案2】:

    既然你说文件在你当前的位置,File 只是在它前面添加。如果您在另一个目录中执行程序,则路径将是其他内容。 Java 不会检查文件是否存在,并且 java 无法知道您在哪里创建了一个名为 that 的文件 - 并且可能有多个名为 so 的文件。

    如果你想访问一个不在你当前工作目录中的文件(你可以看到使用System.getProperty("user.dir)),你需要在它前面给它一个路径——不管是相对的还是绝对的,但是java无法猜测您的文件在哪里。

    【讨论】:

      【解决方案3】:

      对任何文件(无论是在桌面上还是在任何地方)执行此操作的最简单方法是首先浏览文件。 其次,选择文件。 三、使用代码获取所选文件的绝对文件路径。

      为此,您可以使用以下内容:

      JFileChooser choose = new JFileChooser();
      choose.showOpenDialog(null);
      File f = choose.getSelectedFile();
      String filePath = f.getAbsolutePath();
      

      否则,当且仅当您的文件位于桌面上或桌面位于文件路径中的某个位置时,您才可以使用:

      File f = new File(System.getProperty("user.home") + "/Desktop" + "\\file.txt");
      if(f.exists())
         String filePath = f.getAbsolutePath(); 
      

      希望这会有所帮助!

      此代码直接进入桌面,然后获取您硬编码的文件。

      【讨论】:

        猜你喜欢
        • 2012-04-24
        • 2010-09-18
        • 1970-01-01
        • 2016-11-19
        • 2013-08-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多