为了账号安全,请及时绑定邮箱和手机立即绑定

子目录是空文件夹就不会打印出来?

最后遍历所有文件 包括子目录的时候  如果是空文件夹,空文件夹的名字就打印不出来了,这是BUG么?

正在回答

5 回答

因为递归之后是有判断某个目录下的长度的,而当递归遍历到空文件夹时,它的长度为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);

}

}


0 回复 有任何疑惑可以回复我~

+1 求解。没有递归的时候直接打印file是打印出来dir目录下的文件夹路径 递归之后什么都没有

0 回复 有任何疑惑可以回复我~

按照老师的写法,只要是文件夹都不会被打印名字,只会打印file的路径

0 回复 有任何疑惑可以回复我~

写法上加if判断是目录时候递归了,这块限制了,换个写法,不加else就可以了打印了,不用细究这块,else的时候都不是目录才打印,所以打印不出来空文件夹

0 回复 有任何疑惑可以回复我~

空文件夹能正常打印啊?只要你代码没错的话,遍历出来的结果是这个空文件夹的名字

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

子目录是空文件夹就不会打印出来?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信