使用 BFS 遍历Java中的目录
给定一个目录,打印以给定目录为根的目录树中的所有文件和文件夹。
我们可以使用以下步骤迭代遍历 BFS 中的目录。我们创建一个空队列,我们首先将给定的目录路径排入队列。当队列不为空时,我们运行一个循环。我们从队列中取出一个项目。如果弹出的项目是一个目录,则获取其中存在的所有文件和目录的列表,将每个目录添加到队列中。如果弹出的项目是一个文件,我们打印它的名字。
// Java program to print all files/directories
// present in a directory.
import java.io.File;
import java.util.LinkedList;
import java.util.Queue;
class FileUtils {
public static void printDirsFiles(String inputDir)
{
/* make a queue to store files and directories */
Queue queue = new LinkedList<>();
queue.add(new File(inputDir));
/* loop until queue is empty -*/
while (!queue.isEmpty()) {
/* get next file/directory from the queue */
File current = queue.poll();
File[] fileDirList = current.listFiles();
if (fileDirList != null) {
/* Enqueue all directories and print
all files. */
for (File fd : fileDirList) {
if (fd.isDirectory())
queue.add(fd);
else
System.out.println(fd);
}
}
}
}
/* Iterative function to traverse given
directory in Java using BFS*/
public static void main(String[] args)
{
String inputDir = "C:\\Programs";
printDirsFiles(inputDir);
}
}