仅使用循环读取和打印Java中的所有目录和文件

仅使用循环读取和打印Java中的所有目录和文件,java,file,directory,iteration,Java,File,Directory,Iteration,我正在尝试读取所有目录和文件,包括子目录。每次找到文件和目录时,程序都会打印文件夹中的内容。如果找到另一个目录并打印其内容,则此操作将继续。当一个目录中有多个文件夹时,我无法获取其他目录数据。我的代码只有在只有一条路要走的时候才有效。这是我的密码。DirFolder3也应该打印它的内容。这个程序也不应该使用递归。输出应该类似于DirFolder1、DirFolder2和DirFolder4目录。谢谢你的帮助 主文件: import java.io.IOException; public cla

我正在尝试读取所有目录和文件,包括子目录。每次找到文件和目录时,程序都会打印文件夹中的内容。如果找到另一个目录并打印其内容,则此操作将继续。当一个目录中有多个文件夹时,我无法获取其他目录数据。我的代码只有在只有一条路要走的时候才有效。这是我的密码。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
阅读类:

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

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

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


您可以在这里检查实现

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

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


您可以在此处检查实现情况

您期望的输出是什么?为清楚起见,将此添加到问题中。这是否回答了您的问题?您期望的输出是什么?为清楚起见,将此添加到问题中。这是否回答了您的问题?