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

listDirectory(file);在使用过程中报错,并不像老师那样直接写出来就能用

package com.pb.io;

import java.io.File;
import java.io.IOException;

public class FileUtils {
	/*
	 * 列出指定目录下(包括其子目录的所有文件)
	 */
	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 string : filenames) {
			System.out.println(string);
		}*/
		File[] files=dir.listFiles() ;
		
		if(files.length>0 && files!=null){
			for (File file : files) {
				if(file.isDirectory()){
					listDirectory(file);
				}
				else{
					System.out.println(file);
			}
			}
		}
	}

	

	
}


提问者:小冥王 2015-09-23 19:20

个回答

  • hushirrh
    2016-10-04 17:55:00

    老师讲的这里使用的递归操作,“listDirecrory(file)”方法递归调用已经定义好的“listDirecrory(file)”方法。
    你这段程序定义的方法是“listDirectoryFile(File dir)”,下面调用的也必须是“listDirectoryFile(file)”方法,这才是递归调用!

  • 慕祈
    2016-08-27 15:13:45

    这个是自己定义的方法,以为当出现子目录的时候重新调用方法,而不是java 的API有这个方法,是你自己定义的。

  • synchronized_cj
    2016-08-18 15:45:37

    你定义的是这个方法listDirectoryFile

    用到是这个方法listDirectory  当然会报错,说你没定义这个方法

  • lsying
    2016-08-12 21:52:49

    你解决了吗

  • _神人A
    2015-11-29 22:15:53

    你的名字错了 应该是listDirectoryFile 

  • ooooevan
    2015-11-05 21:54:12

    递归调用时file会调到最后一个文件二不是文件夹,则会触发class前面if(!dir.isDirectory()) 报错,

  • 好帮手慕珊
    2015-09-28 10:17:56

    报什么错的,贴一下报错信息