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

我觉得遍历不是很懂

import java.io.File;

public class Example1 {
	public static void main(String args[]) {
		Example1 example1 = new Example1();
		File file = new File("../Homework");
		example1.f(file, 1);

	}
//indent是缩进
	public void f(File file, int indent) {
		if (!file.exists())
			throw new IllegalArgumentException("文件" + file + "不存在");
		if (!file.isDirectory())
			throw new IllegalArgumentException("文件" + file + "不是目录");
		File[] files = file.listFiles();
		for (File fil : files) {
			for (int i = 0; i < indent; i++) {
				System.out.print("|-");
			}
			System.out.println(fil.getName());
			if (fil.isDirectory())
				f(fil, indent + 3);
		}
	}
}

看老师的为什么还要file!=null,我感觉既然已经存在File数组中,就不会不存在了,这时还包括文件,有子文件的文件夹,空文件夹的情况。这时不论是哪一种都先打印出名字就好了,然后是文件夹的在递归(这时不用管是不是空的)。不知道想的对不对。。

提问者:如果繁星能来到我身边 2016-05-17 11:59

个回答

  • helloworld2008
    2016-07-17 18:27:10

    也会有这样的情况。该目录下什么都没有,那么这时返回的数组长度就是0。那就没有东西可以打印了啊。

  • 如果繁星能来到我身边
    2016-05-17 12:25:25

    空文件夹的长度为0,空文件夹再递归的时候,file[]数组长度为0,相当于一个File实例,不过是一个文件夹。先打印出名字,因为数组中没存放任何东西,就不会再进行递归了。