天天看点

使用File类遍历本地目录

       自己动手,丰衣足食。我发现必须得时常的亲手敲下代码 ,毕竟有些东西,时间一长就忘了,尤其是代码这种要求一丝不苟的事情。今天在看权力的游戏第八季的第四集之前,编写好了这个遍历文件目录的代码。看上去很简单,但是还是需要动下脑子。ps:权力的游戏是真的好看!

 说下注意的几个点:

  •  这里把level变量设置为函数的参数而不是成员变量,否则每往上一次就得减1,每往下一层就得加1,处理很麻烦。所以有时候巧妙的设计参数可以省去很多复杂的问题
  • 这里注意不要使用返回字符串的那个list函数。因为最后调用函数所需的参数 是File类型,还需要new File(),而且返回的文件名的字符串类型并不是绝对路径,根本不能创建出符合要求的File对象
import java.io.File;


public class PrintDirectory{
//遍历目录
	public static void main(String args[]) {
		File file = new File("F:\\haha");
//  遍历的是F盘下haha文件夹下的文件结构
		printTree(file,0);
	}
	static void printTree(File file,int level) {
//  level参数可直观的看出目录结构
		String pref = "";
		String pred = "";
		for(int i=0;i<level;i++) {
			pref += "-";
			pred += "+";
		}
//		控制输出格式,能够很好的区分文件目录的层次
//		这里把level变量设置为函数的参数而不是成员变量,
//		否则每往上一次就得减1,每往下一层就得加1,处理很麻烦
//		所以有时候巧妙的设计参数可以省去很多复杂的问题
		if(file.isFile())
			System.out.println(pref+file.getName());
		else{
			System.out.println(pred+file.getName());
			File childs[] = file.listFiles();
//			这里注意不要使用返回字符串的那个list函数。因为最后调用函数所需的参数
//			是File类型,还需要new File(),而且返回的文件名的字符串类型并不是绝对路径,
//			根本不能创建File对象
			for(File f : childs)
				printTree(f,level+1);
		}
	}

}