如何解决仅循环读取和打印Java中的所有目录和文件
我正在尝试读取所有目录和文件,包括子目录。每次找到文件和目录时,程序都会打印文件夹中的内容。如果找到另一个目录并打印其内容,此操作将继续。当目录中有多个文件夹时,我无法获取其他目录数据。我的代码仅在只有一种方法时有效。这是我的代码。 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
解决方法
您正在寻找使用BFS遍历目录。它是使用递归的DFS的替代方法。
使用BFS,您可以使用Queue或其他数据结构来跟踪尚未遍历的子目录。根据要获得的输出(遍历的顺序),您可以决定要以哪种顺序粘贴和从此DS中检索元素。
您可以在https://www.techiedelight.com/traverse-given-directory-bfs-dfs-java/
处查看实施情况版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。