尝试使用Java file.getAbsolutePath()来获取文件的绝对路径

时间:2014-08-03 19:22:25

标签: java eclipse file file-io

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

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

输出结果为:

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

其中“Simple Project”是代码所在项目的名称。

但输出应该是:

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

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

我还尝试使用file.getCanonicalFile()和“file.getCanonicalPath()”。而且我遇到了同样的问题。 在这个项目中,我使用的是文本文件,但我希望它也能用于文件夹。所以,如果有人知道文件夹的解决方案,我希望看到它。

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


编辑:

我认为绝对路径应该是:

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

因为我通过右键单击桌面来创建.txt文件.... 以下是我的桌面的屏幕截图:enter image description here

3 个答案:

答案 0 :(得分:1)

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

要查找未知位置文件的实际路径,您可以搜索它,例如" Recursively list files in Java"。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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

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

希望这会有所帮助!!

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