获取文件及文件夹下所有文件的大小
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; } } }