import java.io.File;
import java.util.Scanner;
import java.text.DecimalFormat;
public class Hannoutadejief {
static void Sm(File[] xxx, File xxxx) {
for (int i = 0; i < xxx.length; i++) {
if (xxx[i].isDirectory()) {
File nihao = new File(xxxx.getName() + File.separator + xxx[i].getName());
Sm(xxx[i].listFiles(), nihao);
} else if (xxx[i].isFile()) {
System.out.println(
"这是" +new DecimalFormat("0.00").format( (double) xxx[i].length() / (double) 1048576) + "MB文件呀:" + xxx[i].getAbsolutePath());
}
}
}
public static void main(String[] args) {
System.out.println("请输入要扫描的夹子路径");
Scanner smq = new Scanner(System.in);
String wjlj = smq.next();
String zzbd = "[C-G]:\\\\(\\W+\\\\)*";// 判断路径格式的正则表达式好像有问题求大佬看看
bb: while (true) {
if ((wjlj.matches(zzbd))) { // 判断是否为文件路径格式,这里的判断好像有问题我已把运算符“!”去掉
System.out.println("你输了什么鬼,请重输路径或结束");
wjlj = smq.next().toString();
} else if (wjlj.indexOf("结束") != -1) {
System.out.println("byebye你嘞");
smq.close();
} else {
File a = new File(wjlj);
if (!(a.isDirectory() && a.exists())) { // 判断是否为文件夹且文件是否存在
System.out.println("你输了什么鬼----空的夹子,byebye你嘞");
break bb;
} else {
Sm(a.listFiles(), a);
}
}
}
}
}
//主要问题运行快结束时总是发生空针针异常其他盘试是过了C盘出现一样问题,D盘正常
//扫描代码改自书本上文件复制,这是我第一个自己认真写的代码,请老师或大佬详解谢谢