Java如何递归搜索文件?

本示例演示了如何使用FileUtils类listFiles()方法搜索由其扩展名指定的文件。我们还可以定义以递归方式找到子目录中的文件。

package org.nhooo.example.commons.io;

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.util.Collection;

public class SearchFileRecursive {
    public static void main(String[] args) {
        File root = new File("/Users/wayan/Dev");

        try {
            String[] extensions = {"xml", "java", "dat"};

            // 在根目录及其可选目录中查找文件
            //匹配扩展数组的子目录。当。。。的时候
            // extensions为null,将返回所有文件。
            //
            // 该方法将匹配的文件返回为java.io.File
            Collection files = FileUtils.listFiles(root, extensions, true);

            for (Object o : files) {
                File file = (File) o;
                System.out.println("File = " + file.getAbsolutePath());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Maven依赖

<!-- http://repo1.maven.org/maven2/commons-io/commons-io/2.6/commons-io-2.6.jar -->
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.6</version>
</dependency>