My Azure Контейнер BLOB-объектов содержит две виртуальные папки, A и B, а также некоторые файлы. Я использую этот код в своем проекте для загрузки содержимого контейнера в локальной папке:
private async void Test(string temp, CloudBlobContainer container, string target, string prefix) {
foreach (var item in container.ListBlobs(prefix)) {
switch (item) {
case CloudBlobDirectory directory:
Directory.CreateDirectory(Path.Combine(temp, directory.Prefix));
Test(Path.Combine(temp, directory.Prefix), container, target, directory.Prefix);
break;
}
}
await CopyAll(temp, target, controller); /* Just a function to call at the end of the method*/
}
Наличие контейнера с этой виртуальной структурой:
container
A/
B/
one.txt
two.txt
...
Я хочу скопировать та же структура в локальной папке. Проблема в том, что B пропускается , и foreach
рассматривается только A, но если я заменю Test(Path.Combine(temp, directory.Prefix), container, target, directory.Prefix)
, например, System.Diagnostics.Debug.WriteLine(directory.Prefix)
, чтобы просто напечатать их, то B печатается на приставка. Очевидно, что есть проблема с рекурсией, но я не могу ее увидеть. Я использую рекурсию для перебора виртуальных каталогов в контейнере, чтобы исходная структура реплицировалась в локальную папку.