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

Java IO 文件操作核心 API 與常用實作範例詳解

     編輯:Java 相關知識

Java IO 流向基本觀念

Java IO 操作以「流」為核心抽象:輸出流負責將資料從程式寫出至目的地(檔案、網路、記憶體);輸入流負責從來源讀取資料進入程式。所有 IO 操作皆圍繞這兩個方向展開。

File 類核心方法速查

java.io.File 類提供檔案與目錄的路徑資訊查詢、屬性檢查及基本建立/刪除功能:

路徑與名稱獲取

  • getName():檔案名稱
  • getPath():相對路徑
  • getAbsolutePath():絕對路徑
  • getParent():父目錄路徑

屬性判斷

  • exists():是否存在
  • isFile() / isDirectory():檔案或目錄判斷
  • isAbsolute():是否為絕對路徑
  • canRead() / canWrite() / isHidden():權限與隱藏屬性

資訊獲取

  • length():檔案大小(位元組)
  • lastModified():最後修改時間(配合 Date 格式化)

檔案建立與刪除

// 建立新檔案(不覆蓋既有檔案)
boolean created = file.createNewFile();

// 刪除檔案或空目錄
boolean deleted = file.delete();

遞迴遍歷目錄樹完整範例

public class PrintFiles {
    private String indent = "";
    
    public void list(File dir) {
        System.out.println(indent + dir.getName());
        indent += " | ";
        print(dir, indent);
    }
    
    private void print(File dir, String indent) {
        File[] files = dir.listFiles();
        if (files == null) return;
        
        for (File file : files) {
            if (file.isFile()) {
                System.out.println(indent + file.getName());
            } else if (file.isDirectory()) {
                list(file); // 遞迴處理子目錄
            }
        }
    }
    
    public static void main(String[] args) {
        new PrintFiles().list(new File("C:/Your/Target/Directory"));
    }
}

條件過濾查找檔案

使用 FileFilter(依檔案名稱判斷)

File dir = new File("D:/");
File[] txtFiles = dir.listFiles(new FileFilter() {
    @Override
    public boolean accept(File pathname) {
        return pathname.getName().endsWith(".txt");
    }
});

使用 FilenameFilter(依目錄與檔名判斷)

File[] filtered = dir.listFiles(new FilenameFilter() {
    @Override
    public boolean accept(File dir, String name) {
        return !name.endsWith("a"); // 排除以 a 結尾的檔案
    }
});

實務建議

  • Java 7+ 建議改用 java.nio.file.Files 與 Path API,功能更強大且支援串流操作
  • 大量檔案操作時注意關閉流資源,避免檔案控制代洩漏
  • 跨平台路徑處理請使用 File.separator 或 Paths.get()
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved