getabsolutepath,getAbsolutePath
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得到的是全路径。如果构造参数是相对路径,则返回当前目录的绝对路径+构造参数路径;如果是绝对路径则直接返回。
怎么获取文件路径和目录
File类有两个常用方法可以得到文件路径一个是:getCanonicalPath(),另一个是:getAbsolutePath(),可以通过File类的实例调用这两个方法例如file.getAbsolutePath()其中file是File的实例对象。下面是一个具体例子:
public class PathTest
{
public static void main(String[] args)
{
File file = new File(".\\src\\baidu");
System.out.println(file.getAbsolutePath());
try
{
System.out.println(file.getCanonicalPath());
} catch (IOException e)
{
e.printStackTrace();
}
}
}
getAbsolutePath()和getCanonicalPath()的不同之处在于,getCanonicalPath()得到的是一个规范的路径,而getAbsolutePath()是用构造File对象的路径+当前工作目录。例如在上面的例子中.(点号)代表当前目录。getCanonicalPath()就会把它解析为当前目录但是getAbsolutePath()会把它解析成为目录名字(目录名字是点号)。
下面是上面程序在我电脑上的输出:
G:\xhuoj\konw\.\src\baidu
G:\xhuoj\konw\src\baidu
java中File类中getAbsolutePath()获取路径方法和线程的getPath()获取路径的方法有什么区别?
一个是绝对路径,一个是相对路径
比如说你现在在c:/a/b/下面 有个x.txt
new File("x.txt").getPath()有可能得到x.txt
getAbsolutePath得到c:/a/b/x.txt
Java中getAbsolutePath()什么意思?
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
java文件操作getAbsolutePath和getCanonicalPath的区别
getAbsolutePath() 得到绝对路径、全路径。
getpath 得到缩写的路径,根据当前目录位置可以缩写路径。得到相对路径。
getCanonicalPath() 得到标准路径,将统一平台间的路径写法差异。