Java getCanonicalPath与getAbsolutePath不同-添加/“私人”;

Java getCanonicalPath与getAbsolutePath不同-添加/“私人”;,java,scala,Java,Scala,因为我理解了不同,我不理解为什么绝对路径与规范路径不同-在规范路径中,我看到了绝对路径中不存在的前缀/private 我在scala中运行以下代码 object ScalaDemo { def main(args: Array[String]): Unit = { val dir = Files.createTempDirectory("test").toFile println("dir.getPath:" + dir.

因为我理解了不同,我不理解为什么绝对路径与规范路径不同-在规范路径中,我看到了绝对路径中不存在的前缀
/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
,查看是否存在符号链接,但没有找到任何符号链接。我将mac与scala 2.9.1一起使用您不应该在最终路径上运行
ls-al
。如果要查找符号链接,则必须从第一个文件夹向下跨步到文件。幸运的是,这个过程很快就结束了,因为
ls-la/
产生了以下结果:

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

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

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