最后遍历所有文件 包括子目录的时候 如果是空文件夹,空文件夹的名字就打印不出来了,这是BUG么?
因为递归之后是有判断某个目录下的长度的,而当递归遍历到空文件夹时,它的长度为0,就不会执行for里面的语句了,就更无法执行for里面的打印语句了。
可以运行一下下面的代码,会每次递归都输出长度,容易理解
File[] filename=dir.listFiles();
//遍历该数组
//for (File string : filename) {
// System.out.println(string);
//}
//2、调用list()方法罗列文件
// String[] filename2=dir.list();
//for (String string : filename2) {
// System.out.println(string);
// }
//3、让它列出所有的内容
System.out.println(filename.length);
if(filename!=null&&filename.length>0) {
for (File file : filename) {
if(file.isDirectory()){
//递归
listDirectory(file);
System.out.println(file);
}else{
System.out.println(file);
}
}
+1 求解。没有递归的时候直接打印file是打印出来dir目录下的文件夹路径 递归之后什么都没有
按照老师的写法,只要是文件夹都不会被打印名字,只会打印file的路径
写法上加if判断是目录时候递归了,这块限制了,换个写法,不加else就可以了打印了,不用细究这块,else的时候都不是目录才打印,所以打印不出来空文件夹
空文件夹能正常打印啊?只要你代码没错的话,遍历出来的结果是这个空文件夹的名字