思路:
- 初始化一个队列和动态数组[用来返回结果]
- 将传参入队列
- 如果队列不为空:
- 取出队列第一个元素,判断该元素是否是目录
- 是文件:将该文件追加到动态数组
- 是目录:读取该目录下的所有文件
- 取出队列第一个元素,判断该元素是否是目录
- 如果队列为空:
- 结束循环
public static Object[] QueyeWalkDir(String filePath) {
List<Object> list = new ArrayList<>();
Queue<File> queue = new ArrayDeque<>();
File root = new File(filePath); //得到指定目录,并将该目录入列
queue.offer(root);
while (!queue.isEmpty()){
File pf = queue.poll(); 节点出列(第一次遍历时,该节点为根节点,其余为子节点)
File[] fileList =pf.listFiles(); 获取节点的子节点及叶子节点
assert fileList != null;
for (File f : fileList) {
if (f.isDirectory()) {
queue.offer(f);
}else{
list.add(f); 验证节点是否为叶子节点,也就是文件
}
}
}
return list.toArray();
}