今天看一個例子,裏面用到File類的getCanonicalPath()方法,忽然忘記這個方法返回的是什麼樣的路徑了,跟getPath()和getAbsolutePath()有什麼區別?帶着這兩個問題查了下文檔,得到的結論如下:
getPath():
返回的是定義時的路徑,可能是相對路徑,也可能是絕對路徑,這個取決於定義時用的是相對路徑還是絕對路徑。如果定義時用的是絕對路徑,那麼使用getPath()返回的結果跟用getAbsolutePath()返回的結果一樣
getAbsolutePath():
返回的是定義時的路徑對應的相對路徑,但不會處理“.”和“..”的情況
getCanonicalPath():
返回的是規範化的絕對路徑,相當於將getAbsolutePath()中的“.”和“..”解析成對應的正確的路徑
舉例如下:
- File file = new File(".\\test.txt");
- System.out.println(file.getPath());
- System.out.println(file.getAbsolutePath());
- System.out.println(file.getCanonicalPath());
返回的結果爲:
- .\test.txt
- E:\workspace\Test\.\test.txt
- E:\workspace\Test\test.txt
“..”的情況類似