java中File類的getPath(),getAbsolutePath(),getCanonicalPath()區別

今天看一個例子,裏面用到File類的getCanonicalPath()方法,忽然忘記這個方法返回的是什麼樣的路徑了,跟getPath()和getAbsolutePath()有什麼區別?帶着這兩個問題查了下文檔,得到的結論如下:

getPath():

返回的是定義時的路徑,可能是相對路徑,也可能是絕對路徑,這個取決於定義時用的是相對路徑還是絕對路徑。如果定義時用的是絕對路徑,那麼使用getPath()返回的結果跟用getAbsolutePath()返回的結果一樣

getAbsolutePath():

返回的是定義時的路徑對應的相對路徑,但不會處理“.”和“..”的情況

getCanonicalPath():

返回的是規範化的絕對路徑,相當於將getAbsolutePath()中的“.”和“..”解析成對應的正確的路徑

舉例如下:

  1. File file = new File(".\\test.txt"); 
  2. System.out.println(file.getPath()); 
  3. System.out.println(file.getAbsolutePath()); 
  4. System.out.println(file.getCanonicalPath()); 

返回的結果爲:

  1. .\test.txt 
  2. E:\workspace\Test\.\test.txt 
  3. E:\workspace\Test\test.txt 

“..”的情況類似

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章