为了账号安全,请及时绑定邮箱和手机立即绑定

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

	

	
}


正在回答

7 回答

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

你定义的是这个方法listDirectoryFile

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

1 回复 有任何疑惑可以回复我~

你解决了吗

0 回复 有任何疑惑可以回复我~

你的名字错了 应该是listDirectoryFile 

2 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

戴德莱恩

递归调用时已经用if判断过是Directory。所以并不会在前面的if(!dir.isDirectory()) 报错。 也就是递归调用出现文件的时候就直接else输出文件名了,不会执行listDirectory(file); 应该就是这样了
2015-11-09 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

lsying

The method listDirectory() is undefined for the type FileUtils这是怎么回事
2016-08-12 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信