java file类的getPath和getAbsolutePath和getCanonicalPath 的疑问与解答

先说总结

  • 总结:
    • getPath:返回的是构造时的参数
    • getAbsolutePath:返回的是文件所在目录的路径+构造时的参数
    • getCanonicalPath:返回的就是这个文件存储的绝对路径

学到file类之后,发现竟然有这么多获取path的方法,但是这些方法又各自都返回什么呢,各种有什么区别呢?

  1. 返回的值有什么区别呢?

    • 有疑问咱就动手敲代码实现来观察结果,看看区别。然后就尴尬了,结果是三个方法的返回值完全一模一样
      • 在这里插入图片描述
    • 之后我查阅资料,但是都找不到问题所在,这个问题好像关心的人很少,没有这类解答。于是我就去看汉化jdk发现根本读不懂,感觉就是给懂的人读的,然后我硬着头皮去看了看英文版的jdk,发现了其中的奥妙所在。
      • 首先getPath和getAbsolutePath做比较,他们的不同体现在,file类构造时给的路径不同才会有所不同。

        • 在这里插入图片描述
        • 结果显示
          • file类构造时,参数为相对路径时
            • getPath会直接返回构造时的参数路径
            • getAbsolutePath会返回目录路径+构造时的参数路径
          • file类构造时,参数为绝对路径时
            • getPath会直接返回构造时的参数路径
            • getAbsolutePath会返回全路径
      • getPath和getAbsolutePath和getCanonicalPath做比较

        • 总结由下图总结:
          • getPath:返回的是构造时的参数
          • getAbsolutePath:返回的是文件所在目录的路径+构造时的参数
          • getCanonicalPath:返回的就是这个文件存储的绝对路径
        • 在这里插入图片描述
  2. 各种都在什么情况下使用呢?

持续更新

猜你喜欢

转载自blog.csdn.net/qq_20156289/article/details/108332960