将目录下的文件按照树形结构打印
思路: 1、判断路径的合法性 2、需要表示出当前文件的层级关系,每一层前加一个 “-” 3、在不同层级中需要考虑当前层级,利用递归,参数需要包含层级
判断路径合法性,并判断是文件还是目录:
public static void printTree(String filePath) {
File file = new File(filePath);
if (!file.exists()) {
System.out.println("路径不存在");
return;
}
String level="|";
if (file.isFile()) {
System.out.println(level+file.getName());
} else {
//目录
printTreeLevel(file,level+"-");
}
}
递归打印层级关系:
private static void printTreeLevel(File file, String level){
System.out.println(level+file.getAbsolutePath());
File[] files = file.listFiles(new FileFilter() {
@Override
//过滤文件夹中的隐藏文件
public boolean accept(File pathname){
return !pathname.isHidden();
}
});
for (File f:files) {
if (f.isFile()) {
System.out.println(level+f.getName());
} else {
printTreeLevel(f,level+"-");
}
}
}
public static void main(String[] args) {
String pathName = "D:/JAVA项目/java";
printTree(pathName);
}