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/
转载文章受原作者版权保护。转载请注明原作者出处!