File类遍历(文件夹)目录功能以及递归概念&分类&注意事项

File类遍历(文件夹)目录功能

File类遍历(文件夹)目录功能:

  public String list():返回一个String数组,表示该File目录中的所有子文件或目录

  public File[] listFile():返回一个File数组,表示该File目录中的所有的子文件或目录

注意:

  list方法和listFiles方法遍历的是构造方法中给出的目录

  如果构造方法中给出的目录的路径不存在,会抛出空指针异常

  如果构造方法中给出路径不是一个目录,也会抛出空指针异常

public String[] list():返回一个String数组,表示该File目录中的所有子文件或目录,遍历构造方法中给出的目录,会获取目录中的所有文件/文件名称,把获取到的多个名称存储到一个String类型的数组中

    public static void main(String[] args) {
        File file = new File("E:\\mave\\idea");
        String[] list = file.list();
        for (String s : list) {
            System.out.println(s);
        }
    }

运行结果:

 

 

 

public File[] listFile():返回一个File数组,表示该File目录中的所有的子文件或目录

    public static void main(String[] args) {
        File file1 = new File("E:\\mave\\idea");
        File[] files = file1.listFiles();
        for (File file2 : files) {
            System.out.println(file2);
        }
    }

运行结果:

 

 

递归概念&分类&注意事项

递归:指在当前方法内调用自己的这种现象。

递归的分类:

  递归分为两种,直接递归和间接递归。

  直接递归称为方法自身调用自己。

  间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法。·

注意事项:

  递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。

  在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。

  构造方法,禁止递归。

递归的使用前提:

  当调用方法的时候,方法的主体不变,每次调用方法的参数不同,可以使用递归

 

递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。

复制代码
    public static void main(String[] args){
        a();
    }

    /**
     * 递归一定要有条件限定,保证递归能够停止下来,否则会发生柱内存溢出。
     * Exception in thread "main" java.lang.StackOverflowError
     */
    private static void a() {
        System.out.println("a方法");
        a();
    }
复制代码

运行结果:

 

 

栈堆图

 

 

 

在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。

复制代码
    public static void main(String[] args){
        b(1);
    }

    /**
     * 在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。
     * Exception in thread "main" java.lang.StackOverflowError
     */
    private static void b(int i) {
        System.out.println(i);
        if (i==20000){
            return;
        }
        b(++i);
    }
复制代码

 

 

构造方法,禁止递归。

编译报错:构造方法是创建对象使用的,一直递归会导致内存中有无数多个对象,直接编译报错

 

posted @   monkey大佬  阅读(306)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示