仅使用循环读取和打印Java中的所有目录和文件
我正在尝试读取所有目录和文件,包括子目录。每次找到文件和目录时,程序都会打印文件夹中的内容。如果找到另一个目录并打印其内容,则此操作将继续。当一个目录中有多个文件夹时,我无法获取其他目录数据。我的代码只有在只有一条路要走的时候才有效。这是我的密码。DirFolder3也应该打印它的内容。这个程序也不应该使用递归。输出应该类似于DirFolder1、DirFolder2和DirFolder4目录。谢谢你的帮助 主文件:仅使用循环读取和打印Java中的所有目录和文件,java,file,directory,iteration,Java,File,Directory,Iteration,我正在尝试读取所有目录和文件,包括子目录。每次找到文件和目录时,程序都会打印文件夹中的内容。如果找到另一个目录并打印其内容,则此操作将继续。当一个目录中有多个文件夹时,我无法获取其他目录数据。我的代码只有在只有一条路要走的时候才有效。这是我的密码。DirFolder3也应该打印它的内容。这个程序也不应该使用递归。输出应该类似于DirFolder1、DirFolder2和DirFolder4目录。谢谢你的帮助 主文件: import java.io.IOException; public cla
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粘贴和检索元素的顺序
您可以在此处检查实现情况您期望的输出是什么?为清楚起见,将此添加到问题中。这是否回答了您的问题?您期望的输出是什么?为清楚起见,将此添加到问题中。这是否回答了您的问题?