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

空文件夹没有打印出来

谢谢老师,听了老师的课程,受益匪浅。我有几点疑惑,遍历的时候为什么要files != null,可不可以直接files.length > 0呢?递归的时候,如果是空文件夹也会参加递归,并且递归到“if(files!=bull && files.length > 0 )”就结束了。我的代码如下:

        // 如果要遍历子目录下的内容,就要遍历File对象,做递归操作,File提供了直接返回File对象的API
        File [] files = dir.listFiles();
        if (files.length > 0) {
            for (File file : files) {
                if (file.isDirectory() && file.listFiles().length > 0) {
                    // 递归
                    listDirectory(file);
                } else {
                    System.out.println(file);
                }
            }
        }


正在回答

6 回答

我想问下楼主,如果是目录它怎么打印出文件夹的名字的额?

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

题主应该是对的

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

难道files!=null和files.length()>0不是一个意思吗

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

_神人A

不同的 一个是files是不存在 一个是它可以是一个空的目录
2015-11-29 回复 有任何疑惑可以回复我~
#2

激流勇进__ 回复 _神人A

空目录为什么length还会 >0 呢?
2016-02-17 回复 有任何疑惑可以回复我~

经过本人的测试,老师的确是打印不出空文件。通过测试之后,你只需把图中else去掉就能够打出代码

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

初级学习号

通过测试之后,你只需把图中else去掉就能够输出空目录。
2015-07-04 回复 有任何疑惑可以回复我~
#2

激流勇进__ 回复 初级学习号

去掉后,我怎么没输出来
2016-02-17 回复 有任何疑惑可以回复我~

if (file.isDirectory() && file.listFiles().length > 0) {

                    // 递归

                    listDirectory(file);

                } 

按楼主增加的判断条件,才会打印空目录

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

for-each块里的file是一个File对象,这个对象有listFiles()方法?没报错?

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

李鬼989 提问者

file.isDirectory返回ture才会递归,才会用到listFiles方法
2015-03-21 回复 有任何疑惑可以回复我~
#2

仗剑闯江湖 回复 李鬼989 提问者

我试了一下没问题啊!
2015-03-21 回复 有任何疑惑可以回复我~
#3

李鬼989 提问者 回复 仗剑闯江湖

不是,老师的代码,null文件夹不会打印,只会打印出文件
2015-03-22 回复 有任何疑惑可以回复我~
#4

仗剑闯江湖 回复 李鬼989 提问者

对,老师的代码不会打印空文件夹。
2015-03-22 回复 有任何疑惑可以回复我~
查看1条回复

举报

0/150
提交
取消

空文件夹没有打印出来

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