摘至
例子:1,getPath()与getAbsolutePath()的区别
public static void test1(){File file1 = new File(".\\test1.txt");File file2 = new File("D:\\workspace\\test\\test1.txt");System.out.println("—–默认相对路径:取得路径不同——");System.out.println(file1.getPath());System.out.println(file1.getAbsolutePath());System.out.println("—–默认绝对路径:取得路径相同——");System.out.println(file2.getPath());System.out.println(file2.getAbsolutePath());}
得到的结果:
.\test1.txtD:\workspace\test\.\test1.txtD:\workspace\test\test1.txtD:\workspace\test\test1.txt
由上可得如下结论
getPath()得到的是构造file的时候的路径。getAbsolutePath()得到的是全路径 如果构造的时候就是全路径那直接返回全路径 如果构造的时候试相对路径,返回当前目录的路径+构造file时候的路径
2,getAbsolutePath()和getCanonicalPath()的不同
public static void test2() throws Exception{File file = new File("..\\src\\test1.txt");System.out.println(file.getAbsolutePath());System.out.println(file.getCanonicalPath());}得到的结果
D:\workspace\test\..\src\test1.txtD:\workspace\src\test1.txt
可以看到CanonicalPath不但是全路径,,而且把..或者.这样的符号解析出来。
3,getCanonicalPath()和自己的不同就是解释这段话:
表示现有文件或目录的每个路径名都有一个惟一的规范形式。表示非存在文件或目录的每个路径名也有一个惟一的规范形式。非存在文件或目录路径名的规范形式可能不同于创建文件或目录之后同一路径名的规范形式。同样,现有文件或目录路径名的规范形式可能不同于删除文件或目录之后同一路径名的规范形式。
单下边这段代码是看不到结果的,要配合一定的操作来看。下边操作步骤,同时讲解
public static void test3() throws Exception{
File file = new File("D:\\Text.txt");System.out.println(file.getCanonicalPath());}
步骤:确定你的系统是Windows系统。(1),确定D盘下没有Text.txt这个文件,直接执行这段代码,得到的结果是:
D:\Text.txt
注意这里试大写的Text.txt(2)在D盘下建立一个文件,名叫text.txt,再次执行代码,得到结果
D:\text.txt
同样的代码得到不同的结果。同时可以对比getAbsolutePath()看看,这个得到的结果是一样的。原因:window是大小写不敏感的,也就是说在windows上test.txt和Test.txt是一个文件,所以在windows上当文件不存在时,得到的路径就是按照输入的路径。但当文件存在时,就会按照实际的情况来显示。这也就是建立文件后和删除文件后会有不同的原因。文件夹和文件类似。
由上可推出函数getCanonicalFile()返回的文件对象与调用其的文件对象指向同一个文件。
歌里唱的是“你离开我,就是旅行的意义”,