我有一个文件夹和文件的结构,我想读入并在TreeView中显示。文件夹和文件都是我的C#Visual Studio环境中的对象。
文件夹对象包含:
结构的顶层是一个文件夹。我从这里开始阅读并使用foreach循环来获取这个顶级内的所有文件。然后我需要读取文件夹集合,以查看顶部文件夹是否包含其他文件夹。对于我需要做的每个文件夹,重复相同的过程。
我可以从结构的顶层开始,检查该文件夹是否包含文件夹,但问题是我不知道结构存在多少层。文件夹可以以无限量的级别彼此嵌套。如果我使用foreach循环,我必须将它们嵌套在一起,但嵌套循环的数量将决定我将读入多少层。
我正在寻找一种动态解决方案来继续阅读结构,直到我到达最后一层而不需要使用不必要的代码。
有没有人有解决方案?
结构图。图像中的所有文件夹和文件都可以作为对象访问。
用于遍历结构的代码的图像。
答案 0 :(得分:1)
使用BFS(https://en.wikipedia.org/wiki/Breadth-first_search)或递归是很自然的。 BFS按层遍历目录层,如果使用递归版本,则存在堆栈溢出的危险。
示例:
static void SearchDir(string dirPath)
{
Queue<string> queue = new Queue<string>();
queue.Enqueue(dirPath);
while(queue.Count() != 0)
{
var actualDir = queue.Dequeue();
foreach(var file in Directory.GetFiles(actualDire)
//Output info about all files in the directory
foreach(var dir in Directory.GetDirectories(actualDir)
{
//Output info about all directories in the directory
queue.Enqueue(dir);
}
}
}
答案 1 :(得分:0)
你需要做递归。样本如下
yyyymmdd