day23 Java学习 File类递归练习

 File类递归练习统计:

 

      计算文件夹大小:

public static void main(String[] args) {
        //需求:从键盘接收一个文件夹路径,统计该文件夹大小
        File dir=getDir();
        System.out.println(getFileLength(dir));

    }
          /*从键盘接收一个文件夹路径:*/
    public static File getDir() {
        // 1.创建键盘录入对象
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个文件夹路径");
        // 2.定义一个无限循环
        while (true) {
            String line = sc.nextLine();
            // 3.将录入结果存储并封装成File对象
            File dir = new File(line);
            if (!dir.exists()) {
                System.out.println("录入的文件夹路径不存在,请从新输入:");
            } else if (dir.isFile()) {
                System.out.println("你录入的是文件路径,请从新输入:");
            } else {
                //5.将文件夹路径对象返回
                return dir;
            }
        }
          
        
    }
    
    public static long getFileLength(File dir) {
        //1.定义一个求和对象
        long len=0;
        //2.获取该文件夹下的所有文件和文件夹listFile()
        File [] subFiles =dir.listFiles();
        //3.遍历数组
        for (File subFile : subFiles) {
            //4.判断是文件就计算大小并累加
        if (subFile.isFile()) {
            len=len+subFile.length();
            //5.判断是文件夹,递归调用
        }else  {
            len=len+getFileLength(subFile);
        }

        }
        return len;
        
    }
例子

  

      删除该文件夹:

    public static void main(String[] args) {
        //需求:从键盘接收一个文件夹路径,统计该文件夹大小
        File dir=getDir();
        deleteFile(dir);
        

    }
          /*从键盘接收一个文件夹路径:*/
    public static File getDir() {
        // 1.创建键盘录入对象
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个文件夹路径");
        // 2.定义一个无限循环
        while (true) {
            String line = sc.nextLine();
            // 3.将录入结果存储并封装成File对象
            File dir = new File(line);
            if (!dir.exists()) {
                System.out.println("录入的文件夹路径不存在,请从新输入:");
            } else if (dir.isFile()) {
                System.out.println("你录入的是文件路径,请从新输入:");
            } else {
                //5.将文件夹路径对象返回
                return dir;
            }
        }
          
        
    }
    
    public static void deleteFile(File dir) {
         //1.获取该文件夹下的所有文件和文件夹listFile()
        File [] subilt =dir.listFiles();
        //2.遍历数组
        for (File file : subilt) {
            //判断是文件夹直接删除 
            if(file.isFile()) {
                file.delete();
                //如果是文件夹,递归调用
            }else {
                deleteFile(file);
            }
            
        }
        //循环结束后把空文件删除。
        dir.delete();
        System.out.println("删除成功");
    }
例子

 

    求斐波那契数列:

    //数组求斐波那契数列: 
         int [] arr=new int[12];   //相当于一年后
         arr[0]= 1;
         arr[1]= 1;
         for (int i = 2; i < arr.length; i++) {
             arr[i]=arr[i-2]+arr[i-1];
        }
       System.out.println(arr[arr.length-1]);
      System.out.println(Fun(12));
    }

    // 用递归求斐波那契数列:
public static int Fun(int num) {

               if (num ==1 || num==2) {
                return 1;
            }else {
                return Fun(num-2)+Fun(num-1);
            }
        
    }
例子

 

posted @ 2019-06-04 00:43  锋XX  阅读(166)  评论(0编辑  收藏  举报