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

Java 遞歸列出目錄下所有文件完整示例

     編輯:Java 相關知識

需求場景

項目中常需要遍歷某個目錄及其子目錄,列出所有文件與文件夾的絕對路徑,例如構建文件索引、批量處理文件等。

核心代碼

import java.io.*;

public class ListFiles {
    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("請輸入目錄路徑:");
        String dirPath = in.readLine();
        getFileList(dirPath);
        in.close();
    }

    public static void getFileList(String directory) {
        File dir = new File(directory);
        if (!dir.exists() || !dir.isDirectory()) {
            System.out.println("路徑無效或不是目錄:" + directory);
            return;
        }
        File[] files = dir.listFiles();
        if (files == null) return;

        for (File f : files) {
            if (f.isFile()) {
                System.out.println("文件:" + f.getAbsolutePath());
            } else {
                System.out.println("目錄:" + f.getAbsolutePath());
                getFileList(f.getAbsolutePath()); // 遞歸遍歷子目錄
            }
        }
    }
}

關鍵點解析

  • File.listFiles() 返回目錄下所有文件與子目錄數組。
  • 使用 isFile() / isDirectory() 區分類型。
  • 遞歸調用 getFileList(f.getAbsolutePath()) 實現深度遍歷。
  • 異常處理:IOException、空指針防護。

擴展建議

  1. 加入文件過濾器(如只列出 .java 文件)。
  2. 使用 Java NIO.2 Files.walkFileTree 實現非遞歸、更高效的遍歷。
  3. 收集結果到 List<File> 而非直接打印,便於後續處理。

相關專題推薦

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved