Photo by Jan Antonin Kolar on Unsplash |
getPath():定義時寫什麼路徑,它就傳回什麼路徑
getAbsolutePath():傳回絕對路徑,但不會處理相對路徑使用的 " . " 和 " .. ",會保留下來
getCanonicalPath():傳回典範絕對路徑,會將 getAbsolutePath() 路徑中的 " . " 和 " .. " 解析組成正確的絕對路徑
*假設 user.dir 位址為 D:\workspace\java_io
例一:使用相對路徑 .\\src\\test.txt
File file = new File(".\\src\\text.txt");
System.out.println(file.getPath()); → .\src\text.txt
System.out.println(file.getAbsolutePath()); → D:\workspace\java_io\.\src\text.txt
System.out.println(file.getCanonicalPath()); → D:\workspace\java_io\src\text.txt
例二:使用相對路徑 ..\\src\\test.txt
File file = new File("..\\src\\text.txt");
System.out.println(file.getPath()); → ..\src\text.txt
System.out.println(file.getAbsolutePath()); → D:\workspace\java_io\..\src\text.txt
System.out.println(file.getCanonicalPath()); → D:\workspace\src\text.txt
例三:使用絕對路徑 D:\\test\\absoluteTest.txt
File file = new File("D:\\test\\absoluteTest.txt");
System.out.println(file.getPath()); → D:\test\absoluteTest.txt
System.out.println(file.getAbsolutePath()); → D:\test\absoluteTest.txt
System.out.println(file.getCanonicalPath()); → D:\test\absoluteTest.txt
結論:
- 當輸入為絕對路徑時,傳回的都是絕對路徑
- getPath() 傳回的是 File 建構式中的路徑,輸入什麼就傳回什麼
- getAbsolutePath() 傳回的是 user.dir getPath() 的內容從上面看:D:\workspace\java_io\.\src\test.txt,D:\workspace\java_io\..\src\test.txt,可以得出
- getCanonicalPath() 傳回的是將符號解析後的標準(典範)絕對路徑
- Reference -
程式前沿 - 詳談java中File類getPath()、getAbsolutePath()、getCanonical的區別
留言
張貼留言