首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java File 類基礎完全指南:文件/目錄操作、遞歸遍歷、過濾器、刪除非空目錄

     編輯:Java 綜合教學

Java File 類基礎完全指南:文件/目錄操作、遞歸遍歷、過濾器、刪除非空目錄

java.io.File 是文件系統路徑的抽象表示,僅操作元數據(屬性、創建、刪除),不處理文件內容。本文系統整構造方法、核心 API、實戰代碼模板。

構造方法

new File(String path)                    // 路徑字串
new File(File parent, String child)      // 父目錄 + 子路徑
new File(URI uri)                        // URI

核心 API 分類速查

分類方法說明
文件/目錄共用exists()是否存在
getCanonicalPath()標準絕對路徑(解析 . .. 符號鏈接)
separator / separatorChar系統路徑分隔符(跨平台)
getName()文件/目錄名
length()文件長度(目錄返回 0)
lastModified()最後修改時間戳
文件操作createNewFile()創建文件(不存在時)
delete()刪除文件/空目錄
isFile()是否文件
isDirectory()是否目錄
目錄操作mkdir()創建單級目錄
mkdirs()創建多級目錄(含父目錄)
list()返回子項名稱字串數組
listFiles()返回子項 File 數組
listFiles(FileFilter)帶過濾器的 listFiles
isDirectory()判斷是否目錄

實戰代碼模板

1. 基礎屬性檢查與創建

File dir = new File(".");                    // 當前目錄
File sub = new File(dir, "sub");             // 子目錄
if (!sub.exists()) sub.mkdirs();             // 多級創建
File f = new File(sub, "a.txt");
if (!f.exists()) f.createNewFile();
System.out.println(f.getCanonicalPath());    // 標準路徑
System.out.println(new Date(f.lastModified())); // 修改時間

2. 列出所有文件(遞歸)

public static void listAll(File dir) {
    File[] files = dir.listFiles();
    if (files != null) for (File f : files) {
        System.out.println(f.getName());
        if (f.isDirectory()) listAll(f);
    }
}

3. 過濾器:僅列出 .java 文件

FileFilter javaFilter = f -> f.getName().matches(".*[.]java");
File[] javaFiles = new File("src/day07").listFiles(javaFilter);
for (File f : javaFiles) System.out.println(f.getName());

4. 遞歸刪除非空目錄(生產級)

public static void deleteDir(File dir) throws IOException {
    if (!dir.exists()) throw new RuntimeException("不存在: " + dir);
    if (!dir.isDirectory()) throw new RuntimeException("非目錄: " + dir);
    File[] subs = dir.listFiles();
    if (subs != null) for (File f : subs) {
        if (f.isDirectory()) deleteDir(f);
        else if (!f.delete()) throw new IOException("刪除文件失敗: " + f);
    }
    if (!dir.delete()) throw new IOException("刪除目錄失敗: " + dir);
}

最佳實踐提醒

  1. 路徑拼接務必用 File.separator 或 new File(parent, child),避免硬編碼 / 或 \\。
  2. 文件操作前先判 exists(),避免異常。
  3. JDK 7+ 推薦使用 java.nio.file.Files/Path API,功能更豐富、異常信息更清晰、支援符號鏈接、屬性讀取等。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved