Java磁盘清理助手
闲来无事,发现E盘满了,于是写了一个Java脚本,获取同一级下文件夹大小
import java.io.File;
import java.util.Comparator;
import java.util.TreeMap;
public class FileTest {
/**
* 遍历最大深度
*/
final static int MAX_DEEP_LENGTH = 12;
public static void main(String[] args) {
File startPathFile = new File("E:\\");// 替换为目标路径
TreeMap<Long, File> treeMap = new TreeMap<>(Comparator.reverseOrder());
long total = 0L,size ;
for(File file : startPathFile.listFiles()){
size = 0L;
try {
size = getDirectorySize(file, 0);
}catch (Exception e){
e.printStackTrace();
}
treeMap.put(size, file);
total += size;
}
System.out.println();
System.out.println("总用量:" + convert(total));
for (Long key : treeMap.keySet()) {
System.out.println(treeMap.get(key) + "文件夹大小为: " + convert(key));
}
}
public static String convert(long bytes) {
if (bytes < 1024) {
return bytes + " B";
} else if (bytes < 1024 * 1024) {
return (bytes / 1024) + " KB";
} else if (bytes < 1024 * 1024 * 1024) {
return (bytes / (1024 * 1024)) + " MB";
} else {
return (bytes / (1024 * 1024 * 1024)) + " GB";
}
}
public static long getDirectorySize(File directory, int deep) {
long size = 0;
File[] files = directory.listFiles();
if (files != null) {
for (File file : files) {
if (file.isDirectory()) {
System.out.print("\b\b\b\b\b\b\b\b\b\b\b\b 深度" + deep);
if(deep > MAX_DEEP_LENGTH){
return size;
}
size += getDirectorySize(file, deep + 1); // 如果是文件夹,递归调用
} else {
size += file.length(); // 如果是文件,累加文件大小
}
}
}
return size;
}
}
得到结果大概是:
这样的控制台输出,然后就可以愉快的查看占用最多的文件夹是什么了