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;

    }
    }

  • 相关阅读:
    RecycleView使用心得【2】
    URL解析
    CSS 动画总结
    包含块 width 和 height 值的总结
    JS 获取页面大小
    常见跨域方法原理及其用例
    CSS 计数器
    JS 对象总结
    JS 原型以及原型链
    关于未能找到源文件“.NETFramework,Version=v4.0.AssemblyAttributes.cs”问题
  • 原文地址:https://www.cnblogs.com/wangffeng293/p/13269680.html
Copyright © 2011-2022 走看看