递归

递归

  概述
  •   递归:指的是当前方法调用自己的一种现象
  •        递归的分类

      • 递归分为两类:直接递归和间接递归
      • 直接递归: 称为方法自身调用自己的情况
      • 间接递归: 可以归结为: 方法A调用了方法B,方法B调用了方法C,方法C调用了方法A
  • 注意事项:

    • 递归一定要有边界条件(条件限定) , 保证递归能够停下来,否则会发生栈内存溢出.
    • 在递归放纵虽然有限定条件,但是递归的次数也不能太多,否则也会发生栈内存溢出现象
    • 构造方法禁止递归

使用递归打印多级目录

public static void main(String[] args) {
        // 找到Hello文件的路径
        File file = new File("C:\Users\admin\Desktop\Hello");
        //调用getAllFiles()
        getAllFiles(file);
    }

    /*
        定义一个方法,参数传递File类型的目录
        方法中要对目录进行遍历
     */
    public static void getAllFiles(File file) {
        // 表明file此时是一个目录
        System.out.println(file);
        //首先先获取到它直接子目录和直接子文件
        File[] files = file.listFiles();
        // 遍历files目录
        for (File f : files) {
            // 判断如果得到的f是一个目录,需要再次遍历
            if (f.isDirectory()) {
                // 表明f是一个目录,则继续遍历这个目录
                //getAllFiles方法就是获取所有的文件,参数传递的刚好是目录。所以直接调用getAllFiles:递归(自己调用自己)
                getAllFiles(f);
            } else {
                // 此时f不是一个目录,肯定是一个文件
                System.out.println(f);
            }
        }
    }

文件过滤器优化

java.io.FileFilter是一个接口,是File的过滤器,该接口的对象可以传递给File类的listFiles(File Filter) 作为参数,接口中只有有个方法:

boolean accept(File pathname) : 测试pathname是否应该包含在当前的File目录中,

如果符合,返回true.

原文地址:https://www.cnblogs.com/wazesx2580/p/14135171.html