Java 中的 java.io.File 類別雖名為「檔案」,實際上同時代表「檔案」與「目錄」。API 文件以抽象路徑名稱(abstract pathname)描述其本質——目錄本質上也是特殊型態的檔案。File 類別提供跨平台的檔案系統操作抽象層,但路徑表示仍與作業系統相關(Unix 用 / 表根目錄,Windows 用磁碟代號如 C:\)。
File(String parent, String child) // 父目錄路徑 + 子路徑 File(File parent, String child) // 父目錄 File 物件 + 子路徑 File(URI uri) // URI 統一資源識別元 File(String pathname) // 完整路徑字串(絕對或相對)
相對路徑以當前工作目錄為基準;絕對路徑在 Unix 以 / 開頭,Windows 以磁碟代號開頭。
| 方法 | 功能 | 回傳值 |
|---|---|---|
exists() | 檢查檔案/目錄是否存在 | boolean |
createNewFile() | 建立新檔案(不存在時) | boolean |
mkdir() | 建立單層目錄 | boolean |
mkdirs() | 建立多層目錄(含父目錄) | boolean |
list() | 列舉目錄下檔案名稱 | String[] |
isDirectory() | 判斷是否為目錄 | boolean |
getParent() | 取得父目錄路徑 | String |
getName() | 取得檔案/目錄名稱 | String |
getAbsoluteFile() | 取得絕對路徑 File 物件 | File |
import java.io.*;
public class TestFile {
public static void main(String[] args) throws IOException {
// 1. 建立根目錄 hehe
File file = new File("hehe");
if (!file.exists()) file.mkdir();
// 2. 在 hehe 下建立多層目錄 ming\hehe
File nextFile = new File(file, "ming\\hehe");
if (!nextFile.exists()) nextFile.mkdirs(); // 必須用 mkdirs()
System.out.println(nextFile.getParent()); // 輸出:hehe\ming
// 3. 在多層目錄下建立檔案並列舉
if (nextFile.isDirectory()) {
File newFile = new File(nextFile, "ming.txt");
if (!newFile.exists()) {
newFile.createNewFile();
System.out.println(newFile.getName()); // ming.txt
System.out.println(newFile.getAbsoluteFile()); // 絕對路徑
}
// 批次建立 ming0.txt ~ ming4.txt
for (int i = 0; i < 5; i++) {
File listFile = new File(nextFile, "ming" + i + ".txt");
if (!listFile.exists()) listFile.createNewFile();
}
// 列舉目錄內容
String[] list = nextFile.list();
for (String name : list) System.out.println(name);
}
}
}
hehe\ming ming.txt ming0.txt ming1.txt ming2.txt ming3.txt ming4.txt
\\ 代表單一反斜線mkdirs() 而非 mkdir()IOException,需 try-catch 或 throws 處理File.separator 取得平台相關分隔字元,增強跨平台相容性File 類別是 Java IO 系統的入口掌握其操作,後續輸入輸出串流、檔案讀寫才能得心應手。