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

Java 文件操作核心類 File 完解與目錄遍歷實戰

     編輯:Java 相關知識

Java.io.File 類核心定位

在 Java.io 體系中,File 類佔據特殊地位:它不負責具體的資料流讀寫,而是直接面向磁碟文件與文件系統。通過 File 物件,開發者可獲取權限、時間戳、路徑等元資料,並能瀏覽目錄層級結構,是文件管理操作的入口類。

常用構造方法

// 以路徑字串建立
File f1 = new File("/");                     // 根目錄
File f2 = new File("/", "auto.bat");         // 父路徑 + 文件名
// 以父 File 物件建立
File f3 = new File(f1, "auto.bat");          // 父 File + 文件名

核心屬性檢測方法

  • canRead() / canWrite() / exists():可讀、可寫、是否存在
  • getName() / getParent() / getPath() / getAbsolutePath():名稱、父目錄、相對/絕對路徑
  • isFile() / isDirectory() / isAbsolute():類型判斷
  • length() / lastModified():大小(位元組)與最後修改時間

注意:上述方法均為「只讀」,無對應的 setter 改變屬性。

文件操作方法

  • renameTo(File dest):重命名或移動
  • delete():刪除文件或空目錄

目錄處理與遍歷

建立目錄

  • mkdir():建立單層目錄(父目錄必須存在)
  • mkdirs():遞迴建立多層目錄

list() 方法 —— 取得文件名字串陣列

String[] list()                                    // 所有項目
String[] list(FilenameFilter filter)               // 過濾後的項目

FilenameFilter 僅含一個方法:

boolean accept(File dir, String name)

範例:只列出 .html 副檔名的文件

import java.io.*;

public class OnlyExt implements FilenameFilter {
    private String ext;
    public OnlyExt(String ext) { this.ext = "." + ext; }
    @Override
    public boolean accept(File dir, String name) {
        return name.endsWith(ext);
    }
}

class DirListOnly {
    public static void main(String[] args) {
        File dir = new File("/Java");
        FilenameFilter filter = new OnlyExt("html");
        String[] files = dir.list(filter);
        for (String f : files) System.out.println(f);
    }
}

listFiles() 方法 —— 直接回傳 File 物件陣列 (Java 2 新增)

File[] listFiles()
File[] listFiles(FilenameFilter filter)
File[] listFiles(FileFilter filter)   // FileFilter 僅有 boolean accept(File pathname)

回傳 File[] 可直接獲取屬性,避免二次構造路徑,效能與便利性均優於 list()。

最佳實踐提示

  • 優先使用 listFiles() 並搭配 FileFilter 進行型別安全過濾。
  • 大量遍歷時,考慮使用 NIO.2 (Files.walkFileTree) 以獲得更豐富的訪問控制與效能。
  • 跨平台路徑建議用 File.separator 或 Paths.get() 避免硬編碼分隔符。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved