zoukankan      html  css  js  c++  java
  • 递归的练习,1.统计文件夹大小 2.删除文件夹及文件夹下的文件

    public class digui {
    /*
    * 需求1:从键盘接收一个文件夹路径,统计该文件夹大小
    * 需求2:从键盘接收一个文件夹路径,删除该文件夹和文件夹下所有的文件
    *
    */
    public static void main(String[] args) {
    File dir = getDir();// 获取文件夹路径
    System.out.println(getFileLength(dir));
    deleteFile(dir);
    }

    // 删除该文件夹
    private static void deleteFile(File dir) {
    File[] subFiles = dir.listFiles();// 获取该文件夹下所有的文件和文件夹
    for (File subFile : subFiles) {
    if (subFile.isFile()) { // 判断是文件直接删除
    subFile.delete();
    } else {
    deleteFile(subFile); // 如果是文件夹,递归调用
    }
    }
    dir.delete(); // 循环结束后,把空文件夹删掉
    }

    public static File getDir() {
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入一个文件夹路径");
    // 2.定义一个无限循环
    while (true) {
    // 3.从键盘录入的结果存储并封装成File对象
    String line = sc.nextLine();
    File dir = new File(line);
    // 4.对File对象判断
    if (!dir.exists()) {
    System.out.println("您录入的文件不存在,请输入一个文件夹路径:");
    } else if (dir.isFile()) {
    System.out.println("您录入的是文件路径,请输入一个文件夹路径:");
    } else {
    // 5.将文件夹路径对象返回
    return dir;
    }

    }
    }

    /*
    * 统计该文件夹大小
    */
    public static long getFileLength(File dir) { // 传入文件路径dir
    // 1.定义一个求和变量
    long len = 0;
    System.out.println("waf" + dir + "123");
    // 2.获取该文件夹下所有的文件和文件夹listFiles();
    File[] subFile = dir.listFiles();
    // 3.遍历数组
    for (File file : subFile) {
    // 4.判断文件就计算大小并累加
    if (file.isFile()) {
    len = len + file.length();
    // 5.判断是文件夹,递归调用
    } else {
    len = len + getFileLength(file);
    }
    }
    return len;

    }
    }

  • 相关阅读:
    Sketch 画原型比 Axure 好用吗?为什么?
    ps高级磨皮的7个步骤
    算法竞赛入门经典_第二章:循环结构程序设计_上机练习_MyAnswer
    文件操作 & 重定向
    阶乘之和 & 程序运行时间 & 算法分析
    《数据结构与算法分析:C语言描述_原书第二版》CH3表、栈和队列_reading notes
    TIJ——Chapter Two:Everything Is an Object
    LeetCode Reverse Linked List
    LeetCode Contains Duplicate
    LeetCode Contains Duplicate II
  • 原文地址:https://www.cnblogs.com/wangffeng293/p/13269680.html
Copyright © 2011-2022 走看看