Java 删除文件夹和计算文件夹大小
2018-07-13 本文已影响12人
Noah牛YY
背景
本文介绍一个删除文件(夹)和计算文件夹大小的方法
开工
- 删除文件
/**
* 删除指定文件或文件夹及其下面的所有文件
* @param file 文件或路径
*
* @return true: 当文件不存在时
*/
public static boolean deleteAllFiles(File file) {
if (!file.exists()) {
return true;
}
if (file.isFile()) {
return file.delete();
}
File[] files = file.listFiles();
if (files != null) {
for (int i = 0; i < files.length; i++) {
if (!deleteAllFiles(files[i])) {
return false;
}
}
}
return file.delete();
}
- 计算文件夹大小
/**
* 获取文件/文件夹大小, 返回字节数
* @param path
* @return 大小
*/
public static long getLengthLong(String path) {
long totalLength = 0;
File file = new File(path);
if (file.isFile()) {
totalLength += file.length();
} else {
File[] files = file.listFiles();
if (files != null) {
for (File childFile : files) {
totalLength += getLengthLong(childFile.getPath());
}
}
}
return totalLength;
}
/**
* 获取文件大小, 返回字符串, 带单位, 如 1 MB
* @param path 路径
* @return 大小
*/
public static String getLengthStr(String path) {
float lengthLong = getLengthLong(path);
long kb = 1024;
long mb = kb * 1024;
long gb = mb * 1024;
long tb = gb * 1024;
String unit;
float ret;
DecimalFormat format = new DecimalFormat(".00");
if (lengthLong < kb) {
unit = "B";
ret = lengthLong;
} else if (lengthLong < mb) {
unit = "KB";
ret = lengthLong / kb;
} else if (lengthLong < gb) {
unit = "MB";
ret = lengthLong / mb;
} else if (lengthLong < tb) {
unit = "GB";
ret = lengthLong / gb;
} else {
unit = "TB";
ret = lengthLong / tb;
}
return format.format(ret) + " " + unit;
}
总结
-
file.listFiles()
列出指定file
下的所有file
, 包括文件夹 -
file.list()
列出指定file
下的所有file
的filename
, 包括文件夹