ЭТО ВОПРОС ОТВЕТ!C# рекурсивная функция
Мне нужно получить все файлы из Dropbox. Но я не могу закончить свою рекурсивную функцию, он не работает, у меня есть идея, почему он не работает, но я не знаю, как это исправить
private void getAllFiles(string path)
{
var dropCon = DatabaseDropbox.Instance();
if (dropCon.IsConnect())
{
ICloudDirectoryEntry folder = dropCon.DropboxStorage.GetFolder(path);
foreach (ICloudFileSystemEntry fsentry in folder)
{
if (fsentry is ICloudDirectoryEntry) // IF FOLDER
{
}
else // IF FILE
{
Console.WriteLine(path + " " + fsentry.Name);
ListViewItem lvi = new ListViewItem(fsentry.Name);
lvi.SubItems.Add(path);
listViewFolders.Items.Add(lvi);
}
}
foreach (ICloudFileSystemEntry fsentry in folder)
{
if (fsentry is ICloudDirectoryEntry) // IF FOLDER
{
var mpath = path + "/" + fsentry.Name;
getAllFiles(mpath);
}
else // IF FILE
{
Console.WriteLine(path + " " + fsentry.Name);
ListViewItem lvi = new ListViewItem(fsentry.Name);
lvi.SubItems.Add(path);
listViewFolders.Items.Add(lvi);
}
}
}
}
Если его находками файл, он добавляет его в список (форма C#).
КАК ЭТО не работает:
Это будет список всех файлов в первом каталоге, тогда он будет идти в первую папку найти, назовём эту папку «fol1». После того, как он сканирует все «fol1», он добавляет найденные файлы в список, что хорошо. Но тогда, когда он должен вернуться и искать больше файлов в других каталогах, «fol2», «fol3». Рекурсия просто существует и не делает этого. Так вот моя проблема.
FOUND RESULTS:
https://gyazo.com/fda8fde13dfbf32f35d39b87712b5751
ACTUAL FOLDERS:
https://gyazo.com/619e5c46bbc113d7d23a56b225f4f209
https://gyazo.com/265034521f317bf0d308910929d1664c
https://gyazo.com/ed9fe5375e1b21f54bbd1f127085c255
Thanks.
РАБОТА КОД:
private void getAllFiles(string path)
{
var dropCon = DatabaseDropbox.Instance();
if (dropCon.IsConnect())
{
ICloudDirectoryEntry folder = dropCon.DropboxStorage.GetFolder(path);
foreach (ICloudFileSystemEntry fsentry in folder)
{
if (fsentry is ICloudDirectoryEntry) // IF FOLDER
{
var mpath = path + "/" + fsentry.Name;
getAllFiles(mpath);
}
else // IF FILE
{
Console.WriteLine(path + " " + fsentry.Name);
ListViewItem lvi = new ListViewItem(fsentry.Name);
lvi.SubItems.Add(path);
listViewFolders.Items.Add(lvi);
}
}
}
}
Что ваша идея о том, почему он не работает? –
Почему это не работает? И почему он всегда возвращается? –
Мы не знаем, что значит «это не работает». Пожалуйста, объясните лучше, какое неожиданное поведение вы столкнулись. – AntiTcb