A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

看了JDK 7的API   
getPath()
Converts this abstract pathname into a pathname string.
getCanonicalPath()
Returns the canonical pathname string of this abstract pathname.
getAbsolutePath()
Returns the absolute pathname string of this abstract pathname.
还是有些迷糊, 这三个方法都是将abstract pathname转换成了pathname string 但到底这三个方法有啥区别?

求指点,谢谢

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

3 个回复

正序浏览
举个例子说明下区别:
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.txt
D:\workspace\test\.\test1.txt
-----默认绝对路径:取得路径相同------
D:\workspace\test\test1.txt
D:\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.txt
D:\workspace\src\test1.txt
可以看到CanonicalPath不但是全路径,而且把..或者.这样的符号解析出来。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
1. path,普通路径名,由getPath()方法返回,就是你构造File时指定路径名。如File f = new File("testFile.txt");则f.getPath()返回的就是"testFile.txt".
2.abstract pathname,根据File的toString方法的说明,这个也是getPath()返回的结果,和上面的一样。
String java.io.File.toString()
Returns the pathname string of this abstract pathname. This is just the string returned by the getPath method.  

3. absolute path,未修饰的绝对路径,像表示上一级路径的符号"..",在absolute path中是直接显示的。
如File abstractf = new File("..\\testFile.txt");
System.out.println(abstractf.getAbsolutePath());
结果就是 D:\springWorkSpace\Fortest\..\testFile.txt

4. canonical path:修饰过的绝对路径。上面abstractf路径中的".."会被解释成上一级路径。如:
System.out.println(abstractf.getAbsolutePath());
结果就是 D:\springWorkSpace\testFile.txt

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
getPath():就是你File()里封装的是什么,你获得的就是什么
例如:File file = new File("C:\\a\\b.txt"); 你获得的就是C:\\a\\b.txt
File file = new File("b.txt");你获得的就是b.txt
而getAbsolutePath() 不过你写入什么,只要文件存在它就获得完整路径
至于getCanonicalPath() 这个不是经常用,我也没有研究,你写一下试试不就全都知道了吗

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马