File中的getPath()、getAbsolutePath()和getCanonicalPath()有什么区别?

File中的getPath()、getAbsolutePath()和getCanonicalPath()有什么区别?分别在什么情况下使用这几个方法。

javapathfile
1
327
已修改
小课
小课2022-05-11 15:09
1 个回答

这三个方法都是返回当前文件的路径,但是它们的形式不太一样,path是一个比较广的概念,而absolute path和canonical path则更加精准,先看看下面几个路径。

  • C:\temp\file.txt这是一个路径(path),也可以算作绝对路径(absolute path)和规范路径(canonical path)。
  • .\file.txt这是一个路径(path),但是不是绝对路径(absolute path)和规范路径(canonical path)。
  • C:\temp\myapp\bin\..\..\file.txt这是一个路径(path),也可以算作绝对路径(absolute path),但不是一个规范路径(canonical path)。

File对象在创建的时候会传入一个路径,getPath方法返回的就是这个路径,而getAbsolutePath会将非绝对路径缺失的部分补全。

例如,有一个文件C:\file.txt,如果在C:\temp\目录下调用的话,path是..\file.txt,则补全之后的absolute path会是C:\temp\..\file.txt,换一个目录absolute path可能就不再是它了,也就是说absolute path可能会因为path不同而不同,但是canonical path一定是C:\file.txt

1
已修改
小课
小课2022-05-11 15:56
你的回答

内容