问答详情
源自:2-2 遍历目录

如果子目录下没有文件,为什么连这个子目录都不会输出呢?

如果子目录下没有文件,为什么连这个子目录都不会输出呢?

提问者:就要学IT 2015-08-26 16:52

个回答

  • _神人A
    2015-11-29 22:25:04
    已采纳

    因为老师没有对空目录做出来,加一段判断的就好。

    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);
    				}
    			}
    		}
    	}
    }


  • qq_酸牛奶_0
    2015-10-03 23:06:39

    可能是因为你的else语句没有写在for-each循环里面

  • qq_酸牛奶_0
    2015-10-03 23:05:56

    可能是因为你的else语句没有写在for-each循环里面