java file类的getPath和getAbsolutePath和getCanonicalPath 的疑问与解答
先说总结
- 总结:
- getPath:返回的是构造时的参数
- getAbsolutePath:返回的是文件所在目录的路径+构造时的参数
- getCanonicalPath:返回的就是这个文件存储的绝对路径
学到file类之后,发现竟然有这么多获取path的方法,但是这些方法又各自都返回什么呢,各种有什么区别呢?
-
返回的值有什么区别呢?
- 有疑问咱就动手敲代码实现来观察结果,看看区别。然后就尴尬了,结果是三个方法的返回值完全一模一样
- 之后我查阅资料,但是都找不到问题所在,这个问题好像关心的人很少,没有这类解答。于是我就去看汉化jdk发现根本读不懂,感觉就是给懂的人读的,然后我硬着头皮去看了看英文版的jdk,发现了其中的奥妙所在。
-
首先getPath和getAbsolutePath做比较,他们的不同体现在,file类构造时给的路径不同才会有所不同。
- 结果显示
- file类构造时,参数为相对路径时
- getPath会直接返回构造时的参数路径
- getAbsolutePath会返回目录路径+构造时的参数路径
- file类构造时,参数为绝对路径时
- getPath会直接返回构造时的参数路径
- getAbsolutePath会返回全路径
- file类构造时,参数为相对路径时
-
getPath和getAbsolutePath和getCanonicalPath做比较
- 总结由下图总结:
- getPath:返回的是构造时的参数
- getAbsolutePath:返回的是文件所在目录的路径+构造时的参数
- getCanonicalPath:返回的就是这个文件存储的绝对路径
- 总结由下图总结:
-
- 有疑问咱就动手敲代码实现来观察结果,看看区别。然后就尴尬了,结果是三个方法的返回值完全一模一样
-
各种都在什么情况下使用呢?
持续更新