【问题标题】:Reading and Printing All Directories and Files in Java With Only Loops [duplicate]仅使用循环读取和打印Java中的所有目录和文件[重复]
【发布时间】:2020-10-07 20:57:29
【问题描述】:

我正在尝试读取所有目录和文件,包括子目录。每次找到文件和目录时,程序都会打印文件夹内的内容。如果它找到另一个目录并打印其内容,这将继续。当目录中有多个文件夹时,我无法获取其他目录数据。我的代码只有在只有一种方式时才有效。这是我的代码。 DirFolder3 也应该打印其内容。这个程序也不应该使用递归。输出应该类似于 DirFolder1、DirFolder2 和 DirFolder4 目录。感谢您的帮助。

主文件:

import java.io.IOException;

public class DirectoryRead {

    public static void main(String[] args) throws IOException {
        DirInfo scan = new DirInfo();
        
        scan.readDirectory();
    }
}

阅读类:

import java.io.File;
import java.io.IOException;

public class DirInfo {
    
    String dirName = "";
    String childName = "";
    String fileName = "";
    
    public void readDirectory() throws IOException {
        //starting directory
        File dir = new File("C:\\DirFolder1");
        
        //if a directory (parent) exists, loop
        while (dir.exists()) {
            //print the parent/current directory name
            dirName = dir.getName();
            System.out.println(dirName);
            //list all files in current directory
            File [] files = dir.listFiles();
            
            //loop through array and see if a directory or file exists
            for (int i = 0; i < files.length; i++) {
                //if there's a directory, print name
                if (files[i].isDirectory()) {
                    childName = files[i].getName();
                    System.out.println("\t" + childName);
                }
                //if there's a file, print name
                if (files[i].isFile()) {
                    fileName = files[i].getName();
                    System.out.println("\t" + fileName);
                }
            }
            //make child directory the new parent/current directory and repeat
            dir = new File(dir, childName);
        }
    }
}

输出:

DirFolder1
    DirFolder2
    Sample File1.txt
DirFolder2
    DirFolder3
    DirFolder4
    Document2.txt
    Document3.txt
DirFolder4
    Dir4TextFile.txt

【问题讨论】:

标签: java file directory iteration


【解决方案1】:

您正在寻找使用 BFS 遍历目录。它是使用递归的 DFS 的替代方案。

使用 BFS,您可以使用队列或其他数据结构来跟踪您尚未遍历的子目录。取决于您想要的输出(遍历的顺序),您可以决定从该 DS 中粘贴和检索元素的顺序。

你可以在这里查看实现https://www.techiedelight.com/traverse-given-directory-bfs-dfs-java/

【讨论】:

    猜你喜欢
    • 2020-08-29
    • 1970-01-01
    • 1970-01-01
    • 2013-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-20
    • 2023-03-15
    相关资源
    最近更新 更多