标题: 递归统计文件夹的总大小 [打印本页] 作者: 胆小的狙击手 时间: 2016-1-12 20:17 标题: 递归统计文件夹的总大小 class Statistical {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//提示用户输入一个目录路径
System.out.print("请输入要统计的文件夹路径:");
String dirPath = sc.nextLine();
//封装成文件对象
File dir = new File(dirPath);
/*
* 对文件的一些判断,是否存在和是否是目录
*/
if (! dir.exists()) {
System.out.println("该文件路径不存在");
return ;
}
if (dir.isFile()) {
System.out.println("请指定一个目录");
return ;
}
long count = count(dir);//获得文件总字节数
System.out.println(dir.getName() + "的大小为" + transform(count));//输出文件夹大小
}
public static String transform(long count) {
int times = 0;
while (count > 1024) {
count /= 1024;
times ++;
}
switch (times) {
case 1:
return count + "KB";
case 2:
return count + "MB";
case 3:
return count + "GB";
case 4:
return count + "TB";
case 5:
return count + "PB";
default:
return null;
}
}
public static long count(File dir) {
File[] files = dir.listFiles();
long sum = 0;
for (File file : files) {
if (file.isFile()) {
sum += file.length();
} else if (file.isDirectory()) {
sum += count(file);
}
}
return sum;
}
}