获取文件及文件夹下所有文件的大小

package com.ksource.common.util;

import java.io.File;
import java.math.BigDecimal;

/**
 * @Author dxy
 * @Date 2022/7/21 10:13
 * @Description
 */
public class FileSizeUtil {

    public static String getPrintSize(long size) {
        double sizeDou = (double) size;
        //如果字节数少于1024,则直接以B为单位,否则先除于1024,后3位因太少无意义
        if (size < 1024) {
            return String.valueOf(size) + "B";
        } else {
            sizeDou = size / 1024d;
            BigDecimal bigDecimal = new BigDecimal(sizeDou);
            sizeDou = bigDecimal.setScale(2,   BigDecimal.ROUND_HALF_UP).doubleValue();
        }
        //如果原字节数除于1024之后,少于1024,则可以直接以KB作为单位
        //因为还没有到达要使用另一个单位的时候
        //接下去以此类推
        if (sizeDou < 1024d) {
            return String.valueOf(sizeDou) + "KB";
        } else {
            sizeDou = sizeDou / 1024d;
            BigDecimal bigDecimal = new BigDecimal(sizeDou);
            sizeDou = bigDecimal.setScale(2,   BigDecimal.ROUND_HALF_UP).doubleValue();
        }
        if (sizeDou < 1024d) {
            //因为如果以MB为单位的话,要保留最后1位小数,
            //因此,把此数乘以100之后再取余
            return String.valueOf(sizeDou) + "MB";
        } else {
            //否则如果要以GB为单位的,先除于1024再作同样的处理
            sizeDou = sizeDou / 1024d;
            BigDecimal bigDecimal = new BigDecimal(sizeDou);
            sizeDou = bigDecimal.setScale(2,   BigDecimal.ROUND_HALF_UP).doubleValue();
            return String.valueOf(sizeDou) + "GB";
        }
    }

    //创建方法获取指定文件夹下的文件大小并将其打印出来,参数为文件夹绝对路径,返回值文件的大小
    public static long getFileSize(File file){
        //创建文件对象
        if (file.exists() && file.isDirectory()){//文件夹存在
            // 获取文件夹的文件的集合
            File[] files = file.listFiles();
            long count = 0; //用来保存文件的长度
            for (File f : files){ //遍历文件集合
                if (f.isFile()){ //如果是文件
                    count += f.length();//计算文件的长度
                } else {
                    count += getFileSize(f);//递归调用
                }
            }
            return count;
        }else {
            System.out.println("您查询的文件夹有误");
            return 0;
        }
    }
}

  

posted @ 2022-07-21 10:48  岁月淡忘了谁  阅读(296)  评论(0编辑  收藏  举报