File和递归

  • File文件和目录路径名的抽象表示形式。即,Java中把文件或者目录(文件夹)都封装成File对象。也就是说如果我们要去操作硬盘上的文件,或者文件夹只要找到File这个类即可。
  • 构造方法

//File构造函数演示

        String pathName = "e:\\java_code\\hello.java";

        File f1 = new File(pathName);//文件封装成File对象。注意;可以封装不存在文件或者文件夹,变成对象。

        System.out.println(f1);

        File f2 = new File("e:\\java_code","hello.java");

        System.out.println(f2);

        //parent封装成file对象。

        File dir = new File("e:\\java_code");

        File f3 = new File(dir,"hello.java");

        System.out.println(f3);


  • 封装好File对象之后可以获取文件相关信息常用方法

        // 对文件或者文件加进行操作。

        File file = new File("e:\\file.txt");

        // 创建文件,如果文件不存在,创建 true 如果文件存在,则不创建 false如果路径错误,IOException

        boolean b1 = file.createNewFile();

        System.out.println("b1=" + b1);

        //-----------删除文件操作-------注意:不去回收站。慎用------

         boolean b2 = file.delete();

         System.out.println("b2="+b2);

        //-----------需要判断文件是否存在------------

         boolean b3 = file.exists();

         System.out.println("b3="+b3);

        //-----------对目录操作创建,删除,判断------------

        File dir = new File("e:\\abc");

        //mkdir()创建单个目录。//dir.mkdirs();创建多级目录

        boolean b4 = dir.mkdir();

        System.out.println("b4="+b4);

        //删除目录时,如果目录中有内容,无法直接删除。

        boolean  b5 = dir.delete();

        //只有将目录中的内容都删除后,保证该目录为空。这时这个目录才可以删除。

        System.out.println("b5=" + b5);

        //-----------判断文件,目录------------

        File f= new File("e:\\javahaha");// 要判断是否是文件还是目录,必须先判断存在。

        // f.mkdir();//f.createNewFile();

        System.out.println(f.isFile());

        System.out.println(f.isDirectory());


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

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

    直接递归称为方法自身调用自己。间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法。

    public static void main(String[] args) {

            //计算1~num的和,使用递归完成

            intn = 5;

            intsum = getSum(n);

            System.out.println(sum);

        }

        publicstaticintgetSum(intn) {

            if(n== 1){

                return1;

            }

            returnn + getSum(n-1);

        }

        注意:递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。

  •  递归打印所有子目录中的文件路径

    编写一个方法用来打印指定目录中的文件路径,并进行方法的调用

    要求:若指定的目录有子目录,那么把子目录中的文件路径也打印出来

    步骤:

             1. 指定要打印的目录File对象

             2. 调用getFileAll()方法

                       2.1 获取指定目录中的所有File对象

                       2.2 遍历得到每一个File对象

                       2.3 判断当前File 对象是否是目录

                                判断结果为true,说明为目录,通过递归,再次调用步骤2的getFileAll()方法

                                判断结果为false,说明是文件,打印文件的路径

    public static void main(String[] args) {

            File file = new File("d:\\test");

            getFileAll(file);

        }

        //获取指定目录以及子目录中的所有的文件

        public static void getFileAll(File file) {

            File[] files = file.listFiles();

            //遍历当前目录下的所有文件和文件夹

            for(File f : files) {

                //判断当前遍历到的是否为目录

                if(f.isDirectory()){

                    //是目录,继续获取这个目录下的所有文件和文件夹

                    getFileAll(f);

                }else{

                    //不是目录,说明当前f就是文件,那么就打印出来

                    System.out.println(f);

                }

            }

        }



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值