我正在开发一个简单的项目,我正在尝试获取文件的绝对路径。这就是我正在尝试的:
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
文件....
以下是我的桌面的屏幕截图:
答案 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();
希望这会有所帮助!!
此代码直接进入桌面,然后获取您硬编码的文件。