实现逻辑:

  • 实例化file对象,指明要操作的文件路径

  • 判断该路径下是否有文件

  • 获取该文件下的所有文件或文件目录的File数组

  • 判断文件是否为空

  • 如果为空,直接返回

  • 如果不为空,利用foreach循环遍历,判断是文件还是文件夹

  • 如果是文件夹,获取该文件夹的绝对路径,进行递归调用

  • 如果是文件,获取该文件的绝对路径

代码实现

/**
 * Java中使用递归方法遍历文件夹下的所有文件
 */
public class FileTraverse {

    public static void main(String[] args) {
        //文件夹路径
        String path = "D:\\文档\\Java资料";
        traverseFolder(path);
    }

    /**
     * 遍历文件
     *
     * @param path 文件路径
     */
    private static void traverseFolder(String path) {
        // 实例化file对象,指明要操作的文件路径
        File file = new File(path);
        // 判断是否有文件
        if (file.exists()) {
            // 获取该目录下的所有文件或者文件目录的File数组
            File[] files = file.listFiles();
            // 判断文件是否为空
            if (null == files || files.length == 0) {
                System.out.println("文件夹是空的!");
                return;
            } else {
                // 利用foreach 进行循环遍历
                for (File f : files) {
                    // 判断是文件还是文件夹
                    if (f.isDirectory()) {
                        // (getAbsolutePath())获取文件绝对路径
                        System.out.println("文件夹:" + f.getAbsolutePath());
                        // 递归调用
                        traverseFolder(f.getAbsolutePath());
                    } else {
                        System.out.println("文件:" + f.getAbsolutePath());
                    }
                }
            }

        } else {
            System.out.println("文件不存在!");
        }
    }
}

本文转载:CSDN博客