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

来源:2-2 遍历目录

醉清风ds

2017-11-03 18:34

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

写回答 关注

5回答

  • Pikachu2016
    2019-08-16 16:41:42

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

    }

    }


  • qq_prisoner_4
    2019-04-12 10:36:13

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

  • 丑丶小亚
    2018-02-08 14:48:42

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

  • red_joker
    2017-11-09 14:40:38

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

  • 恋晨
    2017-11-03 20:17:22

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

文件传输基础——Java IO流

为您介绍IO流的使用,以及对象的序列化和反序列化的内容

133754 学习 · 1030 问题

查看课程

相似问题