File中的getPath()、getAbsolutePath()和getCanonicalPath()有什么区别?分别在什么情况下使用这几个方法。
这三个方法都是返回当前文件的路径,但是它们的形式不太一样,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
。
内容