【问题标题】:get a file path获取文件路径
【发布时间】:2012-10-05 21:18:51
【问题描述】:

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

我尝试使用:

  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

虽然文件不在那里。

【问题讨论】:

  • 您正在寻找getCanonicalPath()。另请参阅stackoverflow.com/questions/1099300/… 顺便说一句,该文件未检查存在性。
  • @tuergeist : 但文件存在
  • 首先你需要找到文件,然后才能得到它的路径。对于您的具体示例,您可以使用:System.getProperty("user.home") + "/Desktop"; 获取桌面路径,然后您可以在桌面上的文件夹中搜索匹配的文件名。阅读此处了解如何搜索文件:docs.oracle.com/javase/tutorial/essential/io/find.html
  • 你可以得到你不能得到绝对的东西。

标签: java file


【解决方案1】:

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

看看Java Doc:-

路径名,无论是抽象的还是字符串形式的,都可以是绝对的 或亲戚。绝对路径名是完整的,因为没有其他 需要信息才能找到它表示的文件。

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 好的,但是我想获取文件的正确路径,它位于桌面上
      【解决方案4】:

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

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

      【讨论】:

      • 你的意思是我要写路径吗??
      【解决方案5】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-16
        • 2021-09-10
        • 2012-03-25
        • 2014-10-15
        • 1970-01-01
        • 1970-01-01
        • 2020-02-20
        相关资源
        最近更新 更多