杰瑞科技汇

Java如何遍历文件夹下所有文件?

Java遍历文件夹下所有文件的方法

在Java中,有几种常见的方法可以遍历文件夹及其子文件夹中的所有文件,以下是几种实现方式:

Java如何遍历文件夹下所有文件?-图1
(图片来源网络,侵删)

使用File类的listFiles()方法递归遍历

import java.io.File;
public class TraverseFolder {
    public static void main(String[] args) {
        File folder = new File("你的文件夹路径");
        listFiles(folder);
    }
    public static void listFiles(File folder) {
        File[] files = folder.listFiles();
        if (files != null) {
            for (File file : files) {
                if (file.isDirectory()) {
                    // 递归遍历子文件夹
                    listFiles(file);
                } else {
                    // 处理文件
                    System.out.println(file.getAbsolutePath());
                }
            }
        }
    }
}

使用Java NIO的Files.walk()方法(Java 8+)

import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
public class TraverseFolderNIO {
    public static void main(String[] args) throws IOException {
        Path startPath = Paths.get("你的文件夹路径");
        Files.walk(startPath)
             .filter(Files::isRegularFile)
             .forEach(System.out::println);
    }
}

使用Files.walkFileTree()方法(更灵活的控制)

import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
public class TraverseFolderTree {
    public static void main(String[] args) throws IOException {
        Path startPath = Paths.get("你的文件夹路径");
        Files.walkFileTree(startPath, new SimpleFileVisitor<Path>() {
            @Override
            public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
                System.out.println(file);
                return FileVisitResult.CONTINUE;
            }
            @Override
            public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) {
                System.out.println("进入目录: " + dir);
                return FileVisitResult.CONTINUE;
            }
        });
    }
}

使用Apache Commons IO库

如果你可以使用第三方库,Apache Commons IO提供了更简洁的方法:

import org.apache.commons.io.FileUtils;
import java.io.File;
import java.util.Collection;
public class TraverseFolderCommons {
    public static void main(String[] args) {
        File folder = new File("你的文件夹路径");
        Collection<File> files = FileUtils.listFiles(folder, null, true);
        for (File file : files) {
            System.out.println(file.getAbsolutePath());
        }
    }
}

注意事项

  1. 处理大文件夹时要注意性能和内存使用
  2. 考虑添加异常处理(如权限问题、符号链接等)
  3. 对于Java 8+,NIO方法通常更高效
  4. 如果需要过滤特定类型的文件,可以添加过滤条件

选择哪种方法取决于你的具体需求、Java版本和是否可以使用第三方库。

Java如何遍历文件夹下所有文件?-图2
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇