getabsolutepath(getPath getAbsolutePath和getCanonicalPath的区别)
本文目录
getPath getAbsolutePath和getCanonicalPath的区别
仅以程序为例说明。
package test;
import java.io.File;
import java.io.IOException;
public class TestFilePath {
public static void main(String args) {
// TODO Auto-generated method stub
System.out.println(System.getProperty(“user.dir“));
try {
System.out.println(“-----默认相对路径:取得路径不同------“);
File file1 = new File(“..\\src\\test1.txt“);
System.out.println(file1.getPath());
System.out.println(file1.getAbsolutePath());
System.out.println(file1.getCanonicalPath());
System.out.println(“-----默认相对路径:取得路径不同------“);
File file = new File(“.\\test1.txt“);
System.out.println(file.getPath());
System.out.println(file.getAbsolutePath());
System.out.println(file.getCanonicalPath());
System.out.println(“-----默认绝对路径:取得路径相同------“);
File file2 = new File(“D:\\workspace\\test\\test1.txt“);
System.out.println(file2.getPath());
System.out.println(file2.getAbsolutePath());
System.out.println(file2.getCanonicalPath());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
程序执行结果如下:
F:\eclipseworkspace\testejb
-----默认相对路径:取得路径不同------
..\src\test1.txt
F:\eclipseworkspace\testejb\..\src\test1.txt
F:\eclipseworkspace\src\test1.txt
-----默认相对路径:取得路径不同------
.\test1.txt
F:\eclipseworkspace\testejb\.\test1.txt
F:\eclipseworkspace\testejb\test1.txt
-----默认绝对路径:取得路径相同------
D:\workspace\test\test1.txt
D:\workspace\test\test1.txt
D:\workspace\test\test1.txt
结论:
当输入为绝对路径时,返回的都是绝对路径。
当输入为相对路径时:
getPath()返回的是File构造方法里的路径,是什么就是什么,不增不减
getAbsolutePath()返回的其实是user.dir+getPath()的内容,从上面F:\eclipseworkspace\testejb、F:\eclipseworkspace\testejb\..\src\test1.txt、F:\eclipseworkspace\testejb\.\test1.txt可以得出。
getCanonicalPath()返回的就是标准的将符号完全解析的路径
java 中 file.getpath getabsolutepath和getcanonicalpath的不同
一、概念上的不同
?
1
2
3
4
5
getPath
public String getPath()
将此抽象路径名转换为一个路径名字符串。所得字符串使用默认名称分隔符分隔名称序列中的名称。
返回:
此抽象路径名的字符串形式
---------------------------------------------------------
?
1
2
3
4
5
6
7
8
9
10
getAbsolutePath
public String getAbsolutePath()
返回此抽象路径名的绝对路径名字符串。
如果此抽象路径名已经是绝对路径名,则返回该路径名字符串,这与 getPath() 方法一样。如果此抽象路径名是空抽象路径名,则返回当前用户目录的路径名字符串,该目录由系统属性 user.dir 指定。否则,使用与系统有关的方式解析此路径名。在 UNIX 系统上,根据当前用户目录解析相对路径名,可使该路径名成为绝对路径名。在 Microsoft Windows 系统上,根据路径名指定的当前驱动器目录(如果有)解析相对路径名,可使该路径名成为绝对路径名;否则,可以根据当前用户目录解析它。
返回:
绝对路径名字符串,它与此抽象路径名表示相同的文件或目录
抛出:
SecurityException - 如果无法访问所需的系统属性值。
另请参见:
isAbsolute()
---------------------------------------------------------
?
1
2
3
4
5
6
7
8
9
10
11
12
13
getCanonicalPath
public String getCanonicalPath()
throws IOException
返回此抽象路径名的规范路径名字符串。
规范路径名是绝对路径名,并且是惟一的。规范路径名的准确定义与系统有关。如有必要,此方法首先将路径名转换为绝对路径名,这与调用 getAbsolutePath() 方法的效果一样,然后用与系统相关的方式将它映射到其惟一路径名。这通常涉及到从路径名中移除多余的名称(比如 “.“ 和 “..“)、解析符号连接(对于 UNIX 平台),以及将驱动器号转换为标准大小写形式(对于 Microsoft Windows 平台)。
每个表示现存文件或目录的路径名都有一个惟一的规范形式。每个表示不存在文件或目录的路径名也有一个惟一的规范形式。不存在文件或目录路径名的规范形式可能不同于创建文件或目录之后同一路径名的规范形式。同样,现存文件或目录路径名的规范形式可能不同于删除文件或目录之后同一路径名的规范形式。
返回:
规范路径名字符串,它与此抽象路径名表示相同的文件或目录
抛出:
IOException - 如果发生 I/O 错误(可能是因为构造规范路径名需要进行文件系统查询)
SecurityException - 如果无法访问所需的系统属性值,或者存在安全管理器,且其SecurityManager.checkRead(java.io.FileDescriptor) 方法拒绝对文件进行读访问
从以下版本开始:
JDK1.1
二、实例解析
1.getPath()与getAbsolutePath()的区别
?
1
2
3
4
5
6
7
8
9
10
public void diff_pathAndAbsolutePath(){
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());
}
得到的结果:
?
1
2
3
4
5
6
-----默认相对路径:取得路径不同------
.\test1.txt
D:\workspace\test\.\test1.txt
-----默认绝对路径:取得路径相同------
D:\workspace\test\test1.txt
D:\workspace\test\test1.txt
结论:
getPath得到的是构造参数的路径。
getAbsolutePath得到的是全路径。如果构造参数是相对路径,则返回当前目录的绝对路径+构造参数路径;如果是绝对路径则直接返回。
更多文章:
北斗卫星导航地图免费下载(北斗卫星导航免费官方下载是真的吗)
2024年4月6日 03:25
Win8.1设置个性主题详细教程?手机QQ空间个性化主题背景和挂件怎么设置
2024年6月9日 08:48
和平精英体验服官网(和平精英突变团竞2.0体验服在哪里下载)
2024年8月19日 02:15
赛车游戏大全免费下载(求赛车游戏手游排行,有哪些比较推荐的)
2024年7月20日 09:45
金山打字通怎么打字作弊(我们学校有速度测试,就是打一篇文章,有没有作弊版的金山打字通呢)
2024年8月25日 18:30
ofd文件用什么软件打开(电脑上的ofd格式文件如何打开呢)
2024年8月5日 10:46