用递归计算文件夹中文件的大小,并转换成kb,MB为单位
代码如下:
public class Test {
public static void main(String[] args) {
System.out.println("请输入文件/文件夹路径:");
String s = new Scanner(System.in).nextLine();
File files = new File(s);
if(! files.isDirectory()) {
System.out.println("文件路径错误");
return ;
}
long size= getdirLength(files);
System.out.println("结果如下:");
System.out.println(size+"字节");
String a = getSize(size);
System.out.println(a);
}
private static String getSize(long size) {
if(size < 1024) {
// String.valueOf() 把数字变成字符串
return String.valueOf(size)+"B";
}else {
size = size / 1024;
}
if(size < 1024) {
return String.valueOf(size)+"kb";
}else {
size = size / 1024;
}
if(size < 1024) {
size = size * 100;
return String.valueOf((size/100))+"."
+ String.valueOf((size%100)) + "MB";
}else {
size = size*100 / 1024;
return String.valueOf((size / 100)) + "."
+ String.valueOf((size % 100)) + "GB";
}
}
private static long getdirLength(File files) {
File[] file = files.listFiles();
if(file == null) {
return 0;
}
long num = 0;
for(File f : file) {
if(f.isFile()) {
num += f.length();
}else {
num += getdirLength(f);
}
}
return num;
}
}
Console: