控制台输出:
代码:
package Jobday14_作业_栈操作求目录大小;
import java.io.File;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
System.out.println("请输入要目录:");
String s = new Scanner(System.in).nextLine();
File file = new File(s);
if (!file.isDirectory()) {
System.out.println("输入的不能是文件,请输入目录");
return;
}
File[] files = file.listFiles();
LinkedList<File> list = new LinkedList<>();
long size = 0;
long n = 0, z = 0,j = 0;
for (File fwj : files) {
list.add(fwj);
}
while (true) {
for (int i = 0; i < list.size(); i++) {
File f = list.removeLast();
if (f.isFile()) {
n++;
size = size + f.length();
} else {
z++;
File[] files1 = f.listFiles();
if (files1 == null) {
System.out.println(f.getAbsolutePath()+"------无权访问");
j++;
} else {
for (File f1 : files1) {
list.add(f1);
}
}
}
}
if (list.size() == 0) {
break;
}
}
System.out.println(s + "有" + z + "文件夹");
System.out.println(s + "有" + n + "个文件");
System.out.println(s + "有" + j + "个无权访问的目录");
System.out.println("目录的文件大小为:");
System.out.println(size + "字节");
System.out.println(BigDecimal.valueOf(size).divide(BigDecimal.valueOf(1024), 3, BigDecimal.ROUND_UP).doubleValue() + "KB");
System.out.println(BigDecimal.valueOf(size).divide(BigDecimal.valueOf(1024 * 1024), 3, BigDecimal.ROUND_UP).doubleValue()+ "MB");
System.out.println(BigDecimal.valueOf(size).divide(BigDecimal.valueOf(1024 * 1024 * 1024), 3, BigDecimal.ROUND_UP).doubleValue() + "G");
System.out.println(BigDecimal.valueOf(size).divide(BigDecimal.valueOf(1024L * 1024 * 1024 * 1024), 6, BigDecimal.ROUND_UP).doubleValue() + "TB");
}
}