
public class ReadDir {
/**
* 根据初始层级读取文件夹
* @param dir 目标文件夹
* @param level 当前层级
*/
public void read(File dir,int level) {
//先找出当前文件夹下的文件和文件夹
File[] files = dir.listFiles();
//文件前的空格
String space = "";
//根据层级打印空格数
for (int i = 0; i < level; i++) {
space += "\t";
}
//如果文件不为空,就进行遍历,这是一个容错处理,比如系统相关文件夹,是没有读取权限的
if (files != null) {
//对找出来的文件夹和文件进行遍历
for (File file : files) {
//不管是文件还是文件夹都先输出当前文件名
System.out.println(space + "- " + file.getName());
//如果是文件夹的话进行递归,再次对里面的文件进行遍历,如果还有文件夹,再次递归遍历
if (file.isDirectory()) {
//层级选择+1,而不是直接对level++,后者直接改变了level的值
// 如果一个文件夹内又有多个文件夹的话,这样会导致虽然是同级
//但每次后一个文件夹都会比前一个文件夹多一个空格
read(file,level+1);
}
}
}
}
public static void main(String[] args) {
FileDemo05 ld = new FileDemo05();
File file = new File( "D:\\影音\\课程资料\\日方教师\\波老师");
ld.read(file,0);
}
}

如果在递归的时候使用level++的话就会变成如下这样

282



被折叠的 条评论
为什么被折叠?



