本文正在参加「Java主题月 – Java Debug笔记活动」,详情查看<活动链接>
**提问:Java中的getPath(),getAbsolutePath()和getCanonicalPath()有什么区别?
**
Java中的getPath(),getAbsolutePath()和getCanonicalPath()有什么区别?以及什么时候选择哪一个比较好?
回答1:
实践是检验真理的唯一标准。
import java.io.File;
public class PathTesting {
public static void main(String [] args) {
File f = new File("test/.././file.txt");
System.out.println(f.getPath());
System.out.println(f.getAbsolutePath());
try {
System.out.println(f.getCanonicalPath());
}
catch(Exception e) {}
}
}
复制代码
使用上述代码会产生如下输出:
test\..\.\file.txt
C:\projects\sandbox\trunk\test\..\.\file.txt
C:\projects\sandbox\trunk\file.txt
复制代码
综上所述
1,getPath()为您提供基于File对象的路径,该路径可能是相对的,也可能不是相对的;
2,getAbsolutePath()为您提供文件的绝对路径;
3,getCanonicalPath()针对当前目录解析任何相对路径之后,获取路径字符串,并删除所有相对路径(.和..),并且任何文件系统链接都返回一个路径,文件系统认为该路径是引用它指向的文件系统对象的规范方法。
需要注意的是,有大量指向同一文件的绝对路径,但是只有一个规范路径。
举个例子
C:\temp\file.txt -这是一条路径,一条绝对路径和一条规范路径。
.\file.txt-这是一条路。它既不是绝对路径也不是规范路径。
C:\temp\myapp\bin..\..\file.txt-这是一条路径,也是一条绝对路径。这不是一条规范的道路。
规范路径始终是绝对路径。
文章翻译自Stack Overflow :stackoverflow.com/questions/1…
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END