【问题标题】:Using relative directory path in Java在 Java 中使用相对目录路径
【发布时间】:2009-07-15 13:46:52
【问题描述】:

我正在尝试使用相对路径来定位 Java 类中的可执行文件,而不是使用硬编码行,但使用类似:

final static String directory = "../../../ggla/samples/obj/linux_x86"

失败...在 Java 中使用相对路径的正确方法是什么?

【问题讨论】:

  • 定义失败。您收到什么错误消息?您是否为您的操作系统使用了正确的路径分隔符(您应该使用一个用于路径分隔符的 Java 系统变量)?
  • 您的当前目录是什么,该文件绝对在哪里?

标签: java file


【解决方案1】:

最可能的解释是您的当前目录不在您认为的位置。您可以检查 user.dir 的系统属性以查看应用程序的基本路径是什么,或者您可以执行以下操作:

 System.out.println(new File(".").getCanonicalPath());

就在您使用该相对路径调试您的相对引用开始的位置之前。

【讨论】:

    【解决方案2】:

    使用 System.out.println(System.getProperty("user.dir"));查看当前目录在哪里。然后,您可以使用来自该地址的相对路径。

    或者,如果您不需要更新您尝试读取的文件,请使用 getResourceAsStream("filename"); 从类路径获取它;

    卡尔

    【讨论】:

      【解决方案3】:

      您需要getCanonicalPathgetCanonicalFile 来解析相对路径。

      System.out.println(new File("../../../ggla/samples/obj/linux_x86")
          .getCanonicalPath());
      

      【讨论】:

        【解决方案4】:

        您可以使用您描述的相对路径,它应该可以工作。所以错误可能在其他地方。

        请发布一个完整的程序来重现您的错误,然后我们可能会提供帮助。

        【讨论】:

          【解决方案5】:

          我将首先使用 Java File class 中指定的分隔符和路径分隔符。但是,正如我在评论中所说,我需要比“它失败”更多的信息来提供帮助。

          【讨论】:

          • 我不知道其他平台,但在 WinXP+ 和 Linux 上,使用正斜杠似乎可以工作。但是 File.separator +1。
          • 我在个人应用程序中通常很懒惰并使用正斜杠,但在生产代码中(在工作中),我将所有内容都转换为在文件中使用分隔符和 pathSeparator。
          【解决方案6】:

          对于相对路径,也许您可​​以使用java提供的一种方法作为相对路径的开头作为getRelativePath .... 您必须在 java 中的 String 中使用 / 而不是 // !

          【讨论】:

            猜你喜欢
            • 2016-08-04
            • 2021-08-31
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-12-11
            • 2013-02-20
            • 2017-09-07
            • 2018-12-27
            相关资源
            最近更新 更多