我正在尝试为一个Web服务构建一个递归搜索函数,以返回文件和文件夹列表。我创建了两个方法使它们作为递归搜索,首先获取顶层内容,然后将任何文件添加到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);
}
}