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

Java 掃描 Windows 資料夾與檔案:遞迴遍歷 File API 完整範例

     編輯:程式設計綜合問答

核心 API:java.io.File

  • listFiles() / list():取得子檔案/目錄陣列。
  • isDirectory() / isFile():判斷類型。
  • getAbsolutePath():取得完整路徑。

遞迴掃描完整程式碼

import java.io.File;

public class ScanFolder {
    public static void main(String[] args) {
        String root = "F:\\sql"; // Windows 路徑雙反斜線
        scan(root);
    }

    public static void scan(String path) {
        File dir = new File(path);
        if (!dir.exists() || !dir.isDirectory()) {
            System.out.println("路徑不存在或非資料夾:" + path);
            return;
        }
        File[] files = dir.listFiles();
        if (files == null) return; // 權限不足等
        for (File f : files) {
            if (f.isDirectory()) {
                System.out.println("[DIR]  " + f.getAbsolutePath());
                scan(f.getAbsolutePath()); // 遞迴
            } else {
                System.out.println("[FILE] " + f.getAbsolutePath());
                // 這裡可處理檔案:解析 SQL、統計行數等
            }
        }
    }
}

Java 7+ 現代寫法:Files.walkFileTree(NIO.2)

Files.walkFileTree(Paths.get(root), new SimpleFileVisitor<Path>() {
    @Override
    public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
        System.out.println(file);
        return FileVisitResult.CONTINUE;
    }
    @Override
    public FileVisitResult visitFileFailed(Path file, IOException exc) {
        System.err.println("無法存取:" + file + " " + exc);
        return FileVisitResult.CONTINUE;
    }
});

優點:自動處理符號連結、權限錯誤、大目錄效能更好、支援並行流。

Windows 路徑注意事項

  • Java 字串中反斜線需轉義 \\,或用正斜線 /(Windows API 亦支援)。
  • UNC 路徑 \\server\share 同樣適用。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved