小编典典

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

all

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


阅读 103

收藏
2022-03-06

共1个答案

小编典典

考虑这些文件名:

C:\temp\file.txt- 这是一条路径、一条绝对路径和一条规范路径。

.\file.txt- 这是一条路。它既不是绝对路径也不是规范路径。

C:\temp\myapp\bin\..\\..\file.txt- 这是一条路径,也是一条绝对路径。这不是一条规范的路径。

规范路径始终是绝对路径。

从路径转换为规范路径使其成为绝对路径(通常附加在当前工作目录上,例如./file.txt变为c:/temp/file.txt)。文件的规范路径只是“净化”路径,删除和..\解析符号链接等内容(在 unix 上)。

另请注意以下带有 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
2022-03-06