递归遍历文件夹(常考面试题)
用递归遍历文件夹的时候,一定要注意空的文件夹是不能遍历的,如果遍历空文件夹就会报空指针异常:Exception in thread “main” java.lang.NullPointerException,所以在遍历时候需要进行非空条件的判断
递归遍历的常用File方法:
file.isDirectory():判断文件是否为文件夹
file.listFiles():列出文件夹的所有文件
递归逻辑:
1.根据传入的抽象路径参数,判断文件是否问文件夹
2.如果是文件夹,则列出该文件夹下的所有文件,不是文件夹就输出文件路径
3.列出文件夹之后再遍历列出的文件,再判断其中的文件是否为文件夹,如果是,调用本方法,即为递归调用,如果不是,则输出文件路径
代码实现
public class Test {
public static void showFile(String path){
File f1 = new File(path);
//判断文件是否是文件夹
boolean flag1 = f1.isDirectory();
if (flag1){//是文件夹
File[] files = f1.listFiles();
for(int i = 0;files!=null&&i<files.length;i++){
boolean flag2 = files[i].isDirectory();//判断文件是否是文件夹
if (flag2){//是文件夹
showFile(files[i].getPath());
}else {
//获取此文件的路径
System.out.println("普通文件---------"+files[i].getPath());
}
}
}else {
System.out.println("普通文件-----------"+f1.getPath());
}
}
public static void main(String[] args) {
showFile("H:\\IO流实验");
}
}