Discuss / Java / 递归遍历文件夹

递归遍历文件夹

Topic source

日月

#1 Created at ... [Delete] [Delete and Lock User]
@Testpublic void testA(){    File file = new File("文件夹路径");    File[] files = file.listFiles();    if (files != null) {        //开始遍历文件夹,从0个空格开始(可以理解为当前文件夹位置,用于标识)        traverseFolders(files, 0);    }}public void traverseFolders(File[] files, int indexNum) {//    //indexNum递归中会被修改,所以在每次遍历时,需要定位当前文件夹位置    int index = indexNum;    //遍历文件夹    for (File file : files) {        indexNum = index;        //当前文件为文件夹时        if (file.isDirectory()) {            //输出当前文件夹名称            System.out.println(handlingSpaces(indexNum) + file.getName());            //获得该文件夹下的所有文件以及文件夹            File[] files1 = file.listFiles();            if (files1 != null) {                indexNum += 1;                traverseFolders(files1, indexNum);            }        } else {            System.out.println(handlingSpaces(indexNum) + file.getName());        }    }}public StringBuilder handlingSpaces(int indexNum) {//    StringBuilder stringBuilder = new StringBuilder();    if (indexNum > 0) {        for (int i = 0; i < indexNum; i++) {            stringBuilder.append("  ");        }    }    return stringBuilder;}

R

#2 Created at ... [Delete] [Delete and Lock User]

private static void recurprintFiles(File file, FilenameFilter nfilter, String blank) throws Exception {

if (file != null) {

if (file.isDirectory()) {

var fs = file.listFiles(nfilter);

for (var f : fs) {

if (!f.isDirectory()) {

System.out.printf("%s%s\n", blank, f.getName());

} else {

System.out.printf("%s%s%s\n", blank, f.getName(), "\\");

recurprintFiles(f, nfilter, blank + blank + " ");

}

}

} else {

System.out.printf("%s is not dir\n", file);

}

} else {

System.out.println("file is null");

}

}

static void recurprintFiles(File file) throws Exception {

recurprintFiles(file, null);

}

static void recurprintFiles(File file, FilenameFilter nfilter) throws Exception {

recurprintFiles(file, nfilter, "");

}


  • 1

Reply