博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AJPFX:实现递归统计文件夹的总大小
阅读量:6214 次
发布时间:2019-06-21

本文共 1359 字,大约阅读时间需要 4 分钟。

class Statistical {

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//提示用户输入一个目录路径
System.out.print("请输入要统计的文件夹路径:");
String dirPath = sc.nextLine();
//封装成文件对象
File dir = new File(dirPath);
/*

  • 对文件的一些判断,是否存在和是否是目录

    */
    if (! dir.exists()) {
    System.out.println("该文件路径不存在");
    return ;
    }
    if (dir.isFile()) {
    System.out.println("请指定一个目录");
    return ;
    }
    long count = count(dir);//获得文件总字节数
    System.out.println(dir.getName() + "的大小为" + transform(count));//输出文件夹大小
    }

    public static String transform(long count) {

    int times = 0;
    while (count > 1024) {
    count /= 1024;
    times ++;
    }
    switch (times) {
    case 1:
    return count + "KB";
    case 2:
    return count + "MB";
    case 3:
    return count + "GB";
    case 4:
    return count + "TB";
    case 5:
    return count + "PB";
    default:
    return null;
    }
    }

    public static long count(File dir) {

    File[] files = dir.listFiles();
    long sum = 0;
    for (File file : files) {
    if (file.isFile()) {
    sum += file.length();
    } else if (file.isDirectory()) {
    sum += count(file);
    }
    }
    return sum;
    }
    }

递归是在操作文件经常会采用的一种算法,尤其是对文件夹做操作时:比如统计文件夹大小,复制文件夹,删除文件夹等,都要用到递归的算法,使用递归算法能让以前较难的逻辑简单化。

统计文件夹的大小实际上就是列出文件夹中的所有文件,统计每个文件的大小,如果是文件夹,就要再重新列出这个文件夹的所有文件,再统计。可以看出,列出文件夹的所有文件和统计文件夹是重复的动作,所以这时用递归就解决这个问题,如果是文件夹,就重新调用这个方法,把遍历到的文件夹作为参数传过去。最后就能计算出文件夹的总大小了。
我还做了一个判断文件大小的这个小功能,就是能把最后计算出来的字节大小转换成适合单位的大小再打印,比如2049B 会显示2K而不是1029B

转载于:https://blog.51cto.com/14314113/2395778

你可能感兴趣的文章
C语言简单实现链栈基本几个功能
查看>>
《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(15)--- 监视器对象...
查看>>
开通技术博客
查看>>
使用SecureCRT在Linux与Windows之间传输文件
查看>>
git获取远程仓库的方式
查看>>
atomic integer operations P176
查看>>
springboot之HelloWorld
查看>>
python全栈_003_Python3运算符
查看>>
新maven项目创建JSP出现小红叉报错 javax.servlet.http.HttpServlet not found
查看>>
微信小程序列表加载更多
查看>>
leetcode笔记-1 twosum
查看>>
深浅拷贝
查看>>
sql查询重复记录、删除重复记录方法大全
查看>>
odoo开发笔记 -- 用户配置界面增加模块访问权限
查看>>
instanceof函数内部机制探析
查看>>
linux下phpstorm的快速安装
查看>>
批量删除和批量修改(参数使用list)
查看>>
前端通用框架可行性研究报告之弹窗
查看>>
数据转换
查看>>
IOS在一个程序中启动另一个程序
查看>>