2

有没有办法获取计算机上存在的文件的完整路径?例如,我想获取桌面文件夹中文件的完整路径

我尝试使用:

  File f = new File("help.chm");

  String f2=f.getAbsolutePath();
  f3=f3.replaceAll("\\\\","/" );
  System.out.println("Path:"+f3);

但它给了我这样的项目路径:

C:/Users/toshiba/Documents/NetBeansProjects/test/help.chm

虽然文件不在那里。

4

5 回答 5

2

如果创建fileusingnew File("filename")relative path,则无法获取文件的绝对路径 using file.getAbsolutePath(),因为相对路径是根据默认用户主目录或 JVM 路径构建的。

看看Java Doc:-

路径名,无论是抽象的还是字符串形式的,都可以是绝对的或相对的。绝对路径名是完整的,因为不需要其他信息来定位它表示的文件。

相反,相对路径名必须根据从其他路径名获取的信息来解释。默认情况下,java.io 包中的类总是根据当前用户目录解析相对路径名。此目录由系统属性 user.dir 命名,通常是调用 Java 虚拟机的目录。

因此,要获得absolute path这种情况下的路径,您实际上必须自己编写路径。获取absolute path到您保存 的目录file,并将 附加file name到它。

于 2012-10-15T20:29:57.547 回答
0

AFile是文件路径的表示,不一定是磁盘上存在的文件 - 即文件不必存在于磁盘上,File对象也不存在null

这就是为什么有File.exists()方法。

于 2012-10-15T20:27:53.023 回答
0

路径“help.chm”将相对于您启动 JVM 的目录,在您的情况下似乎是C:/Users/toshiba/Documents/NetBeansProjects/test/

要获得桌面的路径,您需要使用 Windows 中桌面目录的绝对路径,这类似于C:/Users/toshiba/Desktop/help.chm

于 2012-10-15T20:30:17.283 回答
0

由于其他答案未涵盖您的问题,因此这是我的评论:

要获取文件的路径,首先需要告诉 java 程序它在哪里或如何找到它。

对于您的特定示例,您可以使用以下方法获取桌面路径:System.getProperty("user.home") + "/Desktop";然后您可以在桌面上的文件夹中搜索匹配的文件名。

阅读此处了解如何搜索文件:docs.oracle.com/javase/tutorial/essential/io/find.html

于 2012-10-15T20:42:11.853 回答
0

您正在尝试从(默认文件夹)读取文件

C:/Users/toshiba/Documents/NetBeansProjects/test/

文件不存在,但将是文件的路径将是

C:/Users/toshiba/Documents/NetBeansProjects/test/

如果您从文件的实际位置读取文件:

File f = new File("C:/Users/toshiba/Desktop/help.chm");

您将看到exists()返回 true。

 System.out.println(f.exists());

然后:

  String f2=f.getCanonicalPath();
于 2012-10-15T20:42:48.587 回答