Java 基础教程

Java 面向对象

Java 高级教程

Java 笔记

Java FAQ

java遍历文件夹中的文件


在 Java 中遍历文件夹中的文件有多种方式,我将为你介绍三种常见的方法,包括使用 Java 标准库、Apache Commons IO 库和 Java 8 的 Stream API。

使用 Java 标准库

这是最基本的方法,无需任何第三方库。下面是步骤流程和示例代码:

步骤:

  1. 使用 File 类表示要遍历的文件夹。
  2. 调用 listFiles() 方法获取文件夹中的所有文件和子文件夹。
  3. 使用递归或者栈来遍历所有子文件夹,重复步骤 2,直到没有更多子文件夹。

示例代码:

import java.io.File;

public class FileTraversal {
    public static void main(String[] args) {
        File folder = new File("path/to/your/folder");
        traverseFolder(folder);
    }

    public static void traverseFolder(File folder) {
        if (folder.isDirectory()) {
            File[] files = folder.listFiles();
            if (files != null) {
                for (File file : files) {
                    if (file.isDirectory()) {
                        traverseFolder(file); // 递归遍历子文件夹
                    } else {
                        System.out.println(file.getAbsolutePath()); // 处理文件
                    }
                }
            }
        }
    }
}

使用 Apache Commons IO 库

使用 Apache Commons IO 库能够简化文件操作。这需要添加相关的 Maven 或 Gradle 依赖。

Maven 依赖:

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.11.0</version>
</dependency>

Gradle 依赖:

implementation 'commons-io:commons-io:2.11.0'

步骤:

  1. 导入 Apache Commons IO 库。
  2. 使用 FileUtils.listFiles() 方法来遍历文件夹中的文件。

示例代码:

import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
import java.util.Collection;

public class FileTraversal {
    public static void main(String[] args) throws IOException {
        File folder = new File("path/to/your/folder");
        Collection<File> files = FileUtils.listFiles(folder, null, true);

        for (File file : files) {
            System.out.println(file.getAbsolutePath());
        }
    }
}

使用 Java 8 的 Stream API

Java 8 引入的 Stream API 使文件遍历更加简洁。这也需要导入 Java 8 或更高版本的库。

步骤:

  1. 使用 Files.walk() 方法创建一个流,遍历文件夹中的所有文件。
  2. 使用 filter() 方法过滤出文件,而不包括文件夹。
  3. 使用 forEach() 方法处理每个文件。

示例代码:

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.stream.Stream;

public class FileTraversal {
    public static void main(String[] args) throws IOException {
        Path folder = Paths.get("path/to/your/folder");

        try (Stream<Path> paths = Files.walk(folder)) {
            paths.filter(Files::isRegularFile)
                 .forEach(path -> System.out.println(path.toAbsolutePath()));
        }
    }
}

这些方法可以根据你的需求选择其中之一。如果你希望使用第三方库,可以考虑使用 Apache Commons IO 库或 Java 8 的 Stream API,它们更加现代化和功能强大。确保根据你的项目需要添加相应的依赖。