java.io.File 是 Java 操作檔案系統的核心類別,雖然不處理實際資料讀寫,但提供路徑解析、檔案/目錄建立刪除、屬性查詢、目錄遍歷與過濾等功能。本文透過完整範例程式碼,系統示範 File 類的常用操作。
File file = new File("C:\\Users\\cdlx2016\\Desktop\\file類");
System.out.println("是否存在:" + file.exists());
File file1 = new File("..\\a.txt"); // 相對路徑:上層目錄
System.out.println("絕對路徑:" + file1.getAbsolutePath());
System.out.println("是否存在:" + file1.exists());
// 建立單一空檔案(不可重複建立同名檔案)
File file2 = new File("C:\\Users\\cdlx2016\\Desktop\\file類\\aa");
System.out.println("建立檔案:" + file2.createNewFile());
// 建立單層目錄
File file3 = new File("C:\\Users\\cdlx2016\\Desktop\\file類\\cc");
System.out.println("建立目錄:" + file3.mkdir());
// 建立多層目錄(含父目錄)
File file4 = new File("C:\\Users\\cdlx2016\\Desktop\\file類\\dd");
System.out.println("建立多層目錄:" + file4.mkdirs());
File src = new File("C:\\Users\\cdlx2016\\Desktop\\file類\\a.txt");
File dest = new File("C:\\Users\\cdlx2016\\Desktop\\file類\\abc.txt");
System.out.println("重命名:" + src.renameTo(dest));
// 跨磁碟移動(重命名至不同磁碟機)
File dest2 = new File("D:\\abc.txt");
System.out.println("跨磁碟移動:" + src.renameTo(dest2));
File file8 = new File("C:\\Users\\cdlx2016\\Desktop\\file類\\abc.txt");
System.out.println("刪除:" + file8.delete()); // 立即刪除
// file8.deleteOnExit(); // JVM 結束時刪除
File file9 = new File("C:\\Users\\cdlx2016\\Desktop\\file類\\aa");
System.out.println("是檔案:" + file9.isFile());
System.out.println("是目錄:" + file9.isDirectory());
System.out.println("是隱藏:" + file9.isHidden());
System.out.println("是絕對路徑:" + file9.isAbsolute());
System.out.println("檔名:" + file9.getName());
System.out.println("路徑:" + file9.getPath());
System.out.println("絕對路徑:" + file9.getAbsolutePath());
File file10 = new File("C:\\Users\\cdlx2016\\Desktop\\file類\\ab.txt");
System.out.println("大小(位元組):" + file10.length());
System.out.println("父目錄:" + file10.getParent());
long time = file10.lastModified();
Date date = new Date(time);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("最後修改時間:" + sdf.format(date));
// 列出所有磁碟根目錄
File[] roots = File.listRoots();
for (File root : roots) {
System.out.println("磁碟:" + root);
}
// 列出指定目錄下的檔名(含隱藏檔)
File dir = new File("C:\\Users\\cdlx2016\\Desktop\\file類");
String[] names = dir.list();
for (String name : names) {
System.out.println(name);
}
// 列出 File 物件陣列(可進一步判斷類型)
File dir2 = new File("C:\\Users\\cdlx2016\\Desktop\\Java部分(javaSE)");
File[] files = dir2.listFiles();
for (File f : files) {
if (f.isDirectory()) {
System.out.println("[目錄] " + f.getName());
} else {
System.out.println("[檔案] " + f.getName());
}
}
File dir3 = new File("C:\\Users\\cdlx2016\\Desktop\\file類");
String[] txtFiles = dir3.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
int idx = name.lastIndexOf('.');
if (idx == -1) return false;
String ext = name.substring(idx + 1);
return "txt".equalsIgnoreCase(ext);
}
});
for (String name : txtFiles) {
System.out.println("TXT 檔:" + name);
}
| 方法 | 說明 |
|---|---|
exists() | 檔案/目錄是否存在 |
createNewFile() | 建立新空檔案 |
mkdir() / mkdirs() | 建立單層/多層目錄 |
renameTo(File) | 重命名或移動(跨磁碟視作業系統支援而定) |
delete() / deleteOnExit() | 立即刪除 / JVM 結束時刪除 |
isFile() / isDirectory() | 判斷類型 |
isHidden() | 是否隱藏 |
getAbsolutePath() | 取得絕對路徑 |
length() | 檔案大小(位元組) |
lastModified() | 最後修改時間(毫秒時間戳) |
list() / listFiles() | 列出目錄內容(字串陣列 / File 陣列) |
list(FilenameFilter) | 依條件過濾檔名 |
listFiles(FileFilter) | 依條件過濾 File 物件 |
提示: Java 7+ 推薦使用 java.nio.file.Path、Files、DirectoryStream 等 NIO.2 API,功能更強大且支援串流操作。