• 递归的练习,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;

    }
    }

  • 相关阅读:
    linux设置定时任务的方法(自己总结)
    SecureCRT上传和下载文件
    ajax上传文件类型
    分页业务逻辑
    $.load
    数组中多条对象去重方式
    jquery cookie
    鼠标滚轮事件(浏览器兼容性写法)
    用cookie保存用户的登录信息,规定保存的期限
    获取url参数值
  • 原文地址:https://www.cnblogs.com/wangffeng293/p/13269680.html
Copyright © 2020-2023  润新知