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

来源:2-2 遍历目录

小冥王

2015-09-23 19:20

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回答

  • 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()) 报错,

    戴德莱恩

    递归调用时已经用if判断过是Directory。所以并不会在前面的if(!dir.isDirectory()) 报错。 也就是递归调用出现文件的时候就直接else输出文件名了,不会执行listDirectory(file); 应该就是这样了

    2015-11-09 17:05:14

    共 1 条回复 >

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

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

    lsying

    The method listDirectory() is undefined for the type FileUtils这是怎么回事

    2016-08-12 21:52:27

    共 1 条回复 >

文件传输基础——Java IO流

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

133755 学习 · 1030 问题

查看课程

相似问题