• 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);
                }
            
        }
    例子
  • 相关阅读:
    右键点击属性截图不了
    win7再分配磁盘新加卷
    oracle逻辑存储结构
    ORACLE spool打印
    oracle实例状态
    基于SCN增量恢复DG同步
    delete误删数据使用SCN恢复
    DG中模拟failover故障与恢复
    NFS挂载遇到的问题
    关于“身为父母”
  • 原文地址:https://www.cnblogs.com/feng0001/p/10971094.html
Copyright © 2020-2023  润新知