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

java;gutter:true; package com.ksource.common.util;</p> <p>import java.io.File; import java.math.BigDecimal;</p> <p>/*<em> * @Author dxy * @Date 2022/7/21 10:13 * @Description </em>/ public class FileSizeUtil {</p> <pre><code>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; } } </code></pre> <p>}

Original: https://www.cnblogs.com/henuyuxiang/p/16501150.html
Author: 岁月淡忘了谁
Title: 获取文件及文件夹下所有文件的大小

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/551859/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球