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

来源:2-2 遍历目录

就要学IT

2015-08-26 16:52

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

写回答 关注

3回答

  • _神人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);
    				}
    			}
    		}
    	}
    }


    就要学IT

    非常感谢!

    2015-12-03 12:17:06

    共 1 条回复 >

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

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

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

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


文件传输基础——Java IO流

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

133754 学习 · 1030 问题

查看课程

相似问题