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

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

getPath():spa

返回的是定義時的路徑,多是相對路徑,也多是絕對路徑,這個取決於定義時用的是相對路徑仍是絕對路徑。若是定義時用的是絕對路徑,那麼使用getPath()返回的結果跟用getAbsolutePath()返回的結果同樣文檔

getAbsolutePath():get

返回的是定義時的路徑對應的相對路徑,但不會處理「.」和「..」的狀況string

getCanonicalPath():it

返回的是規範化的絕對路徑,至關於將getAbsolutePath()中的「.」和「..」解析成對應的正確的路徑class

舉例以下:test

  
  
  
  
  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()); 

返回的結果爲:file

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

「..」的狀況相似方法