Java递归实现输入任意目录,列出文件以及文件夹

import java.io.File;

public class RecursiveFileList {
    public static void main(String[] args) {
        String directoryPath = "D:\\Test"; // 注意!这里路径要修改成你要查的目录
        File directory = new File(directoryPath);

        if (directory.exists() && directory.isDirectory()) {
            listFilesAndDirectories(directory);
        } else {
            System.out.println("目录不存在或不是有效的目录路径!");
        }
    }

    public static void listFilesAndDirectories(File directory) {
        File[] files = directory.listFiles();
        if (files != null) {
            for (File file : files) {
                if (file.isDirectory()) {
                    System.out.println("目录:" + file.getAbsolutePath());
                    listFilesAndDirectories(file); // 递归调用
                } else {
                    System.out.println("文件:" + file.getAbsolutePath());
                }
            }
        }
    }
}

当我们要递归地列出指定目录中的所有文件和子目录时,我们可以使用递归方法来处理。递归是指在方法内部调用自身的过程。在这个问题中,我们定义一个listFilesAndDirectories方法,该方法接收一个File对象,代表当前要处理的目录。

  1. 我们首先检查当前传入的File对象是否是一个有效的目录,同时也要确保该目录存在。这是为了处理传入无效目录或不存在的情况。

  2. 然后,我们调用listFiles方法来获取当前目录下的所有文件和子目录,并将它们存储在一个File数组中。

  3. 如果当前目录中有子目录(File对象表示的是目录而不是文件),我们会进入一个for循环遍历每个子目录。

  4. 对于每个子目录,我们会先打印出它的绝对路径,表示它是一个目录,然后再调用listFilesAndDirectories方法,传入当前子目录的File对象。这样就实现了递归,我们会重复进行步骤1-4,直到遍历到没有子目录为止。

  5. 如果当前目录中有文件(File对象表示的是文件而不是目录),我们会打印出它的绝对路径,表示它是一个文件。

通过这种递归的方式,我们可以处理任意深度的目录结构,将所有的文件和子目录都正确地列出来。在实际使用中,我们要注意避免递归层级过深,以免导致栈溢出等问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值