gpt4 book ai didi

c# - 文件/文件夹结构的递归搜索

转载 作者:行者123 更新时间:2023-11-30 13:59:32 26 4
gpt4 key购买 nike

我正在尝试为返回文件和文件夹列表的网络服务构建递归搜索功能。我创建了这两种方法,以便它们充当递归搜索,它首先获取顶级内容,然后将任何文件添加到 fileList,并将所有子文件夹添加到 subFoldersList。我们传入访问级别(在我们的例子中为 root),然后是您想要获取信息的路径。如果找到任何文件夹,它会删除最上面的文件夹,因为它已经开始搜索该文件夹。然后它调用 processDirectories 方法,该方法将新的路径位置传递回 getFiles,重新开始整个过程​​。现在用于测试我的文件夹结构如下。当它将第二个文件 (profilepic.png) 添加到列表中时。我收到错误消息“集合已修改;枚举操作可能无法执行。”是什么导致了这个错误?

Photos
picture1.png
TestFolder
profilepic.png

我的代码:

    public static List<string> fileList = new List<string>();
public static List<string> subFolderList = new List<string>();

static void processDirectories(string access, string Folder)
{
getFiles(access, Folder);
}

static void getFiles(string access, string Folder)
{
var accessToken = new OAuthToken(token, secret);
var api = new DssAPI(ConsumerKey, ConsumerSecret, accessToken);
var folder = api.GetContents(access, Folder);//Get list from WebService

foreach (var item in folder.Contents)//Contents is an IEnumerable
{
if (item.IsDirectory == true)
subFolderList.Add(item.Path);
else
fileList.Add(item.Path);
}

foreach (var subFolder in subFolderList)
{
subFolderList.RemoveAt(0);
processDirectories(root, subFolder);
}

}

最佳答案

假设您不是将此作为学术练习来编写,您可以使用 Directory.EnumerateFiles并避免自己实现。

foreach(var png in Directory.EnumerateFiles(sourceDirectory, "*.png", SearchOption.AllDirectories))
{
// do something with the png file
}

关于c# - 文件/文件夹结构的递归搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13294390/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com