java File 的getPath getAbsolutePath和getCanonicalPath的不同

797 查看

最近在做安卓作业的时候遇到了getCanonicalPath,遂上网查了一番资料

来看一个DEMO吧:

public class test_path {
    public static void main(String[] args) throws IOException{
            File file1 = new File("..\\test1.txt");
            File file2 = new File("D:\\workspace\\test\\test1.txt");
            System.out.println("-----默认相对路径:取得路径不同------");
            System.out.println("getPath(): "+file1.getPath());
            System.out.println("getAbsolutePath(): "+file1.getAbsolutePath());
            System.out.println("getCanonicalPath(): "+file1.getCanonicalPath());
            System.out.println("-----默认绝对路径:取得路径相同------");
            System.out.println("getPath(): "+file2.getPath());
            System.out.println("getAbsolutePath(): "+file2.getAbsolutePath());
            System.out.println("getCanonicalPath(): "+file2.getCanonicalPath());
    }
}

这是输出结果:


-----默认相对路径:取得路径不同------
getPath(): ..\test1.txt
getAbsolutePath(): D:\Develop\Code\JAVA-itcast\test_path\..\test1.txt
getCanonicalPath(): D:\Develop\Code\JAVA-itcast\test1.txt
-----默认绝对路径:取得路径相同------
getPath(): D:\workspace\test\test1.txt
getAbsolutePath(): D:\workspace\test\test1.txt
getCanonicalPath(): D:\workspace\test\test1.txt

让我们总结一下吧:


函数名 绝对路径 相对路径
getPath() 就是构造file的时候的路径 就是file字符串
getAbsolutePath() 返回当前目录的路径+构造file时候的路径
getCanonicalPath() 在getAbsolutePath()基础上把..或.这样的符号解析出来