| 類型 | 定義 | 示例 | 獲取方式 |
| 抽象路徑 | 系統無關的路徑表示,由 File 類封裝 | new File("data", "test.txt") | file.getPath() |
| 相對路徑 | 相對於「用戶工作目錄」的路徑 | data/test.txt | file.getPath() |
| 絕對路徑 | 從根目錄開始的完整路徑 | /home/user/project/data/test.txt (Linux)
C:\project\data\test.txt (Windows) | file.getAbsolutePath() |
關鍵 API
File f = new File("data/test.txt");
System.out.println(f.getPath()); // data/test.txt (相對)
System.out.println(f.getAbsolutePath()); // /full/path/data/test.txt
System.out.println(f.getCanonicalPath()); // 解析 . .. 符號鏈接後的唯一絕對路徑
// 用戶工作目錄
System.out.println(System.getProperty("user.dir"));
相對路徑解析規則
new File("a", "b") → a/b(父路徑 + 子路徑)。
new File("a/../b") → 不自動規範,getCanonicalPath() 會解析。
- 類路徑資源:
ClassLoader.getResource("config.properties") 返回 URL,非文件系統路徑。
最佳實踐
- 配置文件用絕對路徑:
new File(System.getProperty("user.home"), ".myapp/config")。
- 臨時文件用
Files.createTempFile:避免衝突、自動清理。
- 資源文件用 ClassLoader:
getResourceAsStream("db.properties"),打包進 JAR 也能讀。
- 跨平台分隔符:
File.separator、Paths.get(...) (NIO.2)。
NIO.2 現代 API
Path p = Paths.get("data", "test.txt");
System.out.println(p.toAbsolutePath()); // 絕對路徑
System.out.println(p.normalize()); // 移除 . ..
System.out.println(p.toRealPath()); // 規範路徑 (拋異常如果不存在)
- 上一篇文章: JavaScript 讓輸入框第一次點擊時彈出 alert A 的實作
- 下一篇文章: Android 驗證碼倒計時:CountDownTimer 完整實現
Copyright ©
程式碼之家 All Rights Reserved