Java里各种路径的区别:getPath(), getCanonicalPath()
By:Roy.LiuLast updated:2014-08-17
写程序时,通常会听到各种不同的路径,比如:相对路径,绝对路径等. 对于 java 文件操作来说,一样有这些路径,在以前 没怎么注意到这个api: getCanonicalPath(), 其实这个东西很重要,因为这个api 是真正能拿到一个文件的唯一路径的api, 它的返回值一定是一个绝对路径.唯一指向一个文件.
getPath(), 这是相对路径,相对于当前操作文件的路径。getAbsolutePath() 返回绝对路径,但他返回的绝对路径不是唯一的,不像getCanonicalPath() 那样返回唯一的绝对路径. 比如如下:
这些都是绝对路径,但只有 C:\temp\test.txt 是 getCanonicalPath() 返回的结果,唯一路径。用一个例子来看看返回的结果:
看到没有,如果真正想要拿绝对路径,用 getCanonicalPath() 是个不错的方法. 另外在网上还看到有兄弟是这么总结的:
当输入为绝对路径时,返回的都是绝对路径。
当输入为相对路径时:
getPath()返回的是File构造方法里的路径,是什么就是什么,不增不减
getAbsolutePath()返回的其实是user.dir+getPath()的内容,从上面返回的结果可以得出。
getCanonicalPath()返回的就是标准的将符号完全解析的路径
getPath(), 这是相对路径,相对于当前操作文件的路径。getAbsolutePath() 返回绝对路径,但他返回的绝对路径不是唯一的,不像getCanonicalPath() 那样返回唯一的绝对路径. 比如如下:
C:\temp\test.txt C:\temp\.\test.txt C:\temp1\..\temp\test.txt
这些都是绝对路径,但只有 C:\temp\test.txt 是 getCanonicalPath() 返回的结果,唯一路径。用一个例子来看看返回的结果:
public class PathDemo { public static void main(String args[]) { System.out.println("Path of the given file :"); File child = new File(".././Java.txt"); displayPath(child); File parent = child.getParentFile(); System.out.println("Path of the parent file :"); displayPath(parent); } public static void displayPath(File testFile) { System.out.println("path : " + testFile.getPath()); System.out.println("absolute path : " + testFile.getAbsolutePath()); try { System.out.println("canonical path : " + testFile.getCanonicalPath()); } catch (Exception e) { e.printStackTrace(); } } } Output: Path of the given file : path : ..\.\Java.txt absolute path : C:\Users\WINDOWS 8\workspace\Demo\..\.\Java.txt canonical path : C:\Users\WINDOWS 8\workspace\Java.txt Path of the parent file : path : ..\. absolute path : C:\Users\WINDOWS 8\workspace\Demo\..\. canonical path : C:\Users\WINDOWS 8\workspace
看到没有,如果真正想要拿绝对路径,用 getCanonicalPath() 是个不错的方法. 另外在网上还看到有兄弟是这么总结的:
当输入为绝对路径时,返回的都是绝对路径。
当输入为相对路径时:
getPath()返回的是File构造方法里的路径,是什么就是什么,不增不减
getAbsolutePath()返回的其实是user.dir+getPath()的内容,从上面返回的结果可以得出。
getCanonicalPath()返回的就是标准的将符号完全解析的路径
From:一号门
Previous:Java 取随机数的两种方法
COMMENTS