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