java.io.File 代表文件系統中的路徑抽象(文件或目錄),不直接處理數據內容。實現 Serializable、Comparable,支持序列化與有序集合存儲。
| 類別 | 代表方法 |
|---|---|
| 路徑獲取 | getAbsolutePath()、getCanonicalPath()、getParent()、toURI() |
| 屬性檢測 | exists()、isFile()、isDirectory()、isHidden()、canRead/Write/Execute() |
| 創建/刪除 | createNewFile()、mkdir()、mkdirs()、delete()、deleteOnExit() |
| 目錄遍歷 | list()、listFiles()、listFiles(FileFilter)、listRoots() |
| 元數據 | length()、lastModified()、getFree/Total/UsableSpace() |
| 重命名/權限 | renameTo()、setReadable/Writable/Executable()、setReadOnly() |
// 相對路徑,父目錄需存在
new File("dir/sub1").mkdir();
// 絕對路徑,自動創建父目錄
new File("/home/user/dir/sub2").mkdirs();
// URI 方式
new File(new URI("file:/home/user/dir/sub3")).mkdirs();
// 相對路徑
new File("dir", "file.txt").createNewFile();
// 絕對路徑
new File("/home/user/dir/file.txt").createNewFile();
// 隱藏文件(Linux 下 . 開頭)
new File("dir", ".hidden").createNewFile();
File[] files = dir.listFiles();
for (File f : files) {
System.out.printf("%-30s %s%s%s%s%n",
f.getName(),
f.isFile() ? "[File]" : "",
f.isDirectory() ? "[Directory]" : "",
f.isAbsolute() ? "[Absolute]" : "",
f.isHidden() ? "[Hidden]" : "");
}
File.separator / separatorChar:系統文件分隔符(Unix '/', Windows '\')File.pathSeparator / pathSeparatorChar:系統路徑列表分隔符(Unix ':', Windows ';')跨平台代碼務必使用常量而非硬編碼。
File 是文件系統元數據操作的入口,不涉及字節讀寫。掌握 mkdirs()、createNewFile()、listFiles(FileFilter) 等高階 API,配合 separator 常量,能編寫健壯的跨平台文件管理代碼。