day-10-【IO【File、递归】)

Java File类与递归示例
本文介绍了Java中File类的基本用法,包括构造方法和成员方法,并通过实例展示了如何利用递归来遍历文件目录。同时,文章还提供了一个经典的兔子繁殖问题的递归解决方案。

1.File

在java中File类不是用来描述文件的;
而是用来描述文件或者目录的路径的;不管路径指向的文件或者目录是否存在;

构造方法:
    1.File(String pathname):根据指定的字符串路径,创建一个File 对象,这个对象表示的是这个字符串对应的路径;
    2.File(String parent,String child):把完整的路径分成两部分;
    3.File(File parent,String child):使用Parent表示路径与child拼接成一个完整的路径;
成员方法:
    1.boolean createNewFile():创建一个i性的文件,如果创建成功返回true,否则返回false;
    2.boolean delete():删除文件或目录;
    3.boolean exists():判断文件或者目录是否存在;
    4.String getName():得到文件或目录的名字;
    5.String getParent():获得上一级目录的路径;
    6. File getAbsoluteFile(): 获得file的绝对路径表示的File对象 ;
    7. String getAbsolutePath() :获得绝对路径;
    8.  String getPath():得到File对象表示路径字符串;
    9. boolean isAbsolute() :判断File对象表示的路径是否为绝对路径;
    10.boolean isDirectory():判断File对象表示的路径是否为目录;
    11.boolean isFile() :判断File对象表示的路径是否为文件;
    12. long length():得到文件的长度,单位为字节;
    13.String[] list() :得到当前文件夹下的所有文件或者文件夹对应的路径;
    14. File[] listFiles() 得到当前文件夹下的所有文件或者文件夹的路径对应的File对象;
    15. boolean mkdir() :创建目录;

2.递归

在方法里面自己调用自己;

public void method01(){
    ....
    method01();
    ....
    }

如果让递归无限的循环执行下去,会和出现栈溢出异常;java.lang.StackOverflowError;

在定义递归方法时,要具备两个条件:
    1.在方法中自己调用自己;
    2.给循环一个终止的条件;
1.在什么时候写出递归的方法:
    把总的方法分解成子功能,而且子功能的计算逻辑 与 总的功能的计算逻辑类似;
2.在定义递归方法时,需要具备两个条件:
 1.在方法中自己调用字节;
 2.给递归一个终止的条件;

 举例:
    public class DiGuiDemo2 {

        public static void main(String[] args) {

            int sum = sum(5);
            System.out.println(sum);
        }

        public static int sum(int n){
            if(n==1){
                return 1;
            }
            return sum(n-1)+n;
        }

    }

练习题:不死神兔

    现在有一对兔子,小兔子到从出生的第三个月开始,每个月都要生出一对小兔子.加入说兔子都不死,到了第20个月,总共有多少对兔子?

示例代码:
    public class DiGuiDemo3 {

        public static void main(String[] args) {

            int rabbites = getRabbites(20);
            System.out.println(rabbites);

        }


        public static int getRabbites(int n){
            // 2.终止的条件
            if(n==1 || n==2){
                return 1;
            }
            // 1.字节调用字节
            return getRabbites(n-2)+getRabbites(n-1);
        }


    }

3.练习题

步骤:

    1.创建一个File对象表示"E:\工作\传智播客\JavaEE\讲课视频\JavaEE就业班\Java基础\299期\day10-IO【File、递归】\资料"路径;
    2.定义一个方法,用来打印指定目录下的文件的路径;
    3.在方法中,得到当前目录下的所有File对象;
    4.循环遍历file对象;
    5.在循环中判断该file表示的是否为文件;
    6.如果是文件,就打印绝对路径;
    7.如果不是文件,就调用刚才定义的方法,遍历这个file对象表示的目录,前提条件是目录不能为空;


代码:
    public class PrintPathDemo {

        public static void main(String[] args) {
            // 步骤:
            // 1.创建一个File对象表示"E:\工作\传智播客\JavaEE\讲课视频\JavaEE就业班\Java基础\299期\day10-IO【File、递归】\资料"路径;
            File dir = new File("E:\\工作\\传智播客\\JavaEE\\讲课视频\\JavaEE就业班\\Java基础\\299期\\day10-IO【File、递归】\\资料");

            //调用方法
            printPath(dir);

        }

        // 2.定义一个方法,用来打印指定目录下的文件的路径;
        public static void printPath(File dir) {

            System.out.println("-----------------"+dir.getAbsolutePath()+"------------");
            // 3.在方法中,得到当前目录下的所有File对象;
            File[] listFiles = dir.listFiles();
            // 4.循环遍历file对象;
            if(listFiles == null){
                return;
            }
            for (File file : listFiles) {
                // 5.在循环中判断该file表示的是否为文件;
                if(file.isFile()){
                    // 6.如果是文件,就打印绝对路径;
                    System.out.println(file.getAbsolutePath());
                }else{
                    // 7.如果不是文件,就调用刚才定义的方法,遍历这个file对象表示的目录,前提条件是目录不能为空;
                    printPath(file);
                }
            }
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值