【问题标题】:getCanonicalPath different from getAbsolutePath - adding "/private"getCanonicalPath 与 getAbsolutePath 不同 - 添加“/private”
【发布时间】:2017-10-13 15:20:27
【问题描述】:

据我了解不同的 getPath,getAbsolutePath and getCanonicalPath 我不明白为什么绝对路径与规范路径不同 - 在规范路径中我看到 /private 前缀在绝对路径中不存在

我在 scala 中运行以下代码

object ScalaDemo {
    def main(args: Array[String]): Unit = {
      val dir = Files.createTempDirectory("test").toFile

      println("dir.getPath:" + dir.getPath)
      println("dir.getAbsolutePath:" + dir.getAbsolutePath)
      println("dir.getCanonicalPath:" + dir.getCanonicalPath)
   }
}

我得到了这个输出:

dir.getPath:/var/folders/fq/8q8jpphd2qb2_07p4h2kzn0m0000gn/T/test3084029786797422592
dir.getAbsolutePath:/var/folders/fq/8q8jpphd2qb2_07p4h2kzn0m0000gn/T/test3084029786797422592
dir.getCanonicalPath:/private/var/folders/fq/8q8jpphd2qb2_07p4h2kzn0m0000gn/T/test3084029786797422592

可以看到规范路径有 /private 前缀 - 这是为什么呢?

我还在绝对路径输出上运行ls -al 以查看是否有符号链接但没有找到任何符号链接。我正在使用带有 scala 2.9.1 的 mac

【问题讨论】:

  • ls -l /var/var指的是private/var。就像 luk2302 说的那样
  • @luk2302 你说的太对了!我没想到要检查根文件夹 (/var) - 谢谢
  • @DontKnowMuchButGettingBetter 我在问题中添加了这个链接,但它没有回答问题

标签: java scala


【解决方案1】:

您不应在最终路径上运行ls -al。如果您正在寻找符号链接,则必须从第一个文件夹向下移动到文件。幸运的是,这个过程很快就结束了,因为 ls -la / 产生了等等:

lrwxr-xr-x@  1 root  wheel     11 Jan 11 14:16 var -> private/var

这意味着它实际上是一个符号链接,因此规范路径“扩展”了链接。

【讨论】:

    猜你喜欢
    • 2011-11-12
    • 2010-11-09
    • 1970-01-01
    • 2012-11-04
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多