自己写的,亲测没有问题,希望可以方便大家.
public class FileUtil {
/**
* 得到路径的文件总大小
*
* @param file 目标路径
* @return long类型数据 目标路径的总大小
*/
public static long getFilSize(File file) {
// 判断路径是否存在,如果路径不存在则返回-1
if (file.exists()) {
long size = 0;
if (file.isDirectory()) {
// 如果是文件夹,则递归调用本方法
for (File f : file.listFiles()) {
size += getFilSize(f);
}
} else {
// 如果是文件,则添加大小
size += file.length();
}
return size;
} else {
return 0;
}
}
/**
* 删除目标路径的文件及文件夹
* @param file 目标路径
*/
public static void deleteFiles(File file) {
// 判断路径是否存在
if (file.exists()) {
if (file.isDirectory()) {
// 如果是文件夹且内容不为空,则递归调用本方法
if (file.length() > 0) {
for (File f : file.listFiles()) {
deleteFiles(f);
}
}
// 清空文件夹后或文件夹为空,删除文件夹
file.delete();
} else {
// 如果是文件,直接删除
file.delete();
}
}
}
/**
* 对大小进行格式化
*
* @param size 需要格式化的long类型数据
* @return 格式化后的字符串
*/
public static String sizeFormat(long size) {
// 得到一个bigDecimal对象
BigDecimal bd = BigDecimal.valueOf(size);
// 创建一个格式化工具,保留小数后两位
DecimalFormat format = new DecimalFormat("#.00");
// GB单位
long gb = 1024 * 1024 * 1024;
// MB单位
long mb = 1024 * 1024;
// KB单位
long kb = 1024;
// 得到相应单位的字符串
if (size > gb) {
return format.format(bd.divide(BigDecimal.valueOf(gb))) + " GB";
} else if (size > mb) {
return format.format(bd.divide(BigDecimal.valueOf(mb))) + " MB";
} else if (size > kb) {
return format.format(bd.divide(BigDecimal.valueOf(kb))) + " KB";
} else {
return size + " B";
}
}
}