什么之间的区别getPath(),getAbsolutePath()以及getCanonicalPath()在Java中?
getPath()
getAbsolutePath()
getCanonicalPath()
以及何时使用每一个?
考虑以下文件名:
C:\temp\file.txt -这是一条路径,一条绝对路径和一条规范路径。
C:\temp\file.txt
.\file.txt-这是一条路。它既不是绝对路径也不是规范路径。
.\file.txt
C:\temp\myapp\bin\..\\..\file.txt-这是一条路径,也是一条绝对路径。这不是一条规范的道路。
C:\temp\myapp\bin\..\\..\file.txt
规范路径始终是绝对路径。
从路径转换为规范路径使其成为绝对路径(通常添加到当前工作目录,因此例如./file.txt成为c:/temp/file.txt)。文件的规范路径仅“净化”路径,删除..\并解决符号链接之类的问题并解决(在Unix上)符号链接。
./file.txt
c:/temp/file.txt)
..\
还要注意以下带有nio.Paths的示例:
String canonical_path_string = "C:\\Windows\\System32\\"; String absolute_path_string = "C:\\Windows\\System32\\drivers\\..\\"; System.out.println(Paths.get(canonical_path_string).getParent()); System.out.println(Paths.get(absolute_path_string).getParent());
虽然两个路径都指向相同的位置,但是输出将大不相同:
C:\Windows C:\Windows\System32\drivers