最近研发的功能需要遍历所有文件,觉得网上很多递归的代码都很辣鸡,如果深度太大很容易栈溢出,我自己用队列层序遍历多叉树的办法实现了,不怕深度非常深的文件,而且代码特别简短,经验思想来源于我自己以前的练习文章:
https://blog.csdn.net/cjzjolly/article/details/79386681 《n叉树算法》
特此纪录一下:
package com.lang.transfer;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Queue;
import java.util.concurrent.LinkedBlockingQueue;
public class Main {
private static String rootPath = "E:\\work\\文档\\648Chinese";
public static void main(String args[]){
File rootFile = new File(rootPath);
Queue<File> queue = new LinkedBlockingQueue<File>(); //层序遍历文件夹队列
queue.add(rootFile); //给队列一个头文件夹
while(!queue.isEmpty()){
File file = queue.poll();
if(file.exists() && file.isDirectory() && file.listFiles() != null){
for(File item : file.listFiles()){
queue.add(item);
}
} else if(file.exists()){
System.out.println("正在处理:" + file.getAbsolutePath());
}
}
}
}
效果: