如果子目录下没有文件,为什么连这个子目录都不会输出呢?
因为老师没有对空目录做出来,加一段判断的就好。
package imooc.io; import java.io.File; import java.io.IOException; //列出File的一些常用操作 比如:过滤、遍历等操作 public class FileUtils { /** * 列出指定目录下(包括其子目录)的所有文件 * @param file * @throws IOException */ public static void listDirectoryFile(File dir) throws IOException{ if(!dir.exists()){ throw new IllegalArgumentException("目录" + dir +"不存在"); } if(!dir.isDirectory()){ throw new IllegalArgumentException(dir + "不是目录"); } //返回的是字符串数组 不包括子目录下的文件 /* String[] filenames = dir.list(); for(String filename : filenames){ System.out.println(dir + "\\" + filename); }*/ //如果要遍历子目录下的内容 就需要构造成File对象做递归操作 File[] files = dir.listFiles(); if(files != null && files.length >0){ for(File file : files){ if(file.isDirectory()){ //判断是否为空目录,是则打印空目录的名字,否则则继续递归 String[] childFiles = file.list(); if(childFiles.length > 0){ //用递归 去列出子目录的所有内容 listDirectoryFile(file); }else{ System.out.println(file); } } else{ System.out.println(file); } } } } }
可能是因为你的else语句没有写在for-each循环里面
可能是因为你的else语句没有写在for-each循环里面