在Java中getPath(),getAbsolutePath()和getCanonicalPath()有什么区别?

问题:

Java中的getPath()getAbsolutePath()getCanonicalPath()有什么区别?
我什么时候使用每一个?

回答:

考虑这些文件名:
 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

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: What’s the difference between getPath(), getAbsolutePath(), and getCanonicalPath() in Java?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

+ 18 = 20