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

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

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

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

注意:list方法 和listFiles方法遍历的是构造方法中给出的目录,如果构造方法中给出的目录的路径不存在,会抛出空指针异常,如果构造方法中给出的路径不是一个目录,也会抛出空指针异常

package demo01_File;
 
import java.io.File;
 
/*
Public String [] list(); 返回一个String数组,表示该File目录中的所有子文件或目录
Public File [] listFiles() 返回一个File数组,表示该File目录中的所有的子文件或目录
注意:list方法 和listFiles方法遍历的是构造方法中给出的目录,
如果构造方法中给出的目录的路径不存在,会抛出空指针异常,
如果构造方法中给出的路径不是一个目录,也会抛出空指针异常
 */
public class DemoFile {
    public static void main(String[] args) {
        show01();
    }
    private static void show01(){
        /*
        Public String [] list(); 返回一个String数组,表示该File目录中的所有子文件或目录
        遍历构造方法中给出的目录,会获取目录中所有的文件/文件夹的名称,把获取到的多个名称存储到一个字符串类型的数组中
         */
        File file=new File("G:\\XQ1.01\\网站原型\\WPS Office\\11.1.0.11365\\office6\\addons\\cef\\locales");
        String[] arr=file.list();
        for (String fileName :arr){
            System.out.println(fileName);
        }
    }
    private static void show02(){
        /*
        Public File [] listFiles() 返回一个File数组,表示该File目录中的所有的子文件或目录
        遍历构造方法中给出的目录,会获取目录中所有文件/文件夹,把文件或文件夹封装为File对象,多个File对象存储到File数组中
         */
        File file=new File("G:\\XQ1.01\\网站原型\\WPS Office\\11.1.0.11365\\office6\\addons\\cef\\locales");
        File[] files=file.listFiles();
        for (File f:files){
            System.out.println(f);//调用toString方法
        }
    }
}

 

 

递归概念

概述


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

递归的分类:
递归分为两种,

直接递归和间接递归

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

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

注意事项︰

递归一定要有条件限定,

保证递归能够停止下来,否则会发生栈内存溢出。

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

构造方法,禁止递归

package Demo_Recurison;
/*
 递归:方法自己调用自己
    - 递归的分类:
      - 递归分为两种,直接递归和间接递归。
      - 直接递归称为方法自身调用自己。
      - 间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法。
    - 注意事项:
      - 递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。
      - 在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。
      - 构造方法,禁止递归
    递归的使用前提:
        当调用方法的时候,方法的主体不变,每次调用方法的参数不同,可以使用递归
        构造方法,禁止递归
            编译报错:构造方法是创建对象使用的,一直递归会导致内存中有无数多个对象,直接编译报错


 */
public class Demo01Recurison {
    public static void main(String[] args) {
       // a();
        b(1);

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

    }

      /*
        递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。
        Exception in thread "main" java.lang.StackOverflowError
     */

    private static void a() {
        System.out.println("a方法!");
        a();
    }
}

 

posted @ 2022-07-08 20:33  zj勇敢飞,xx永相随  阅读(156)  评论(0编辑  收藏  举报