Es ist keine gute Methode, Rekursion zu verwenden, wenn Sie unbekannte Tiefe haben. Alternativ können Sie die Überlastung für GetDirectories verwenden (die eine Stapel-Datenstruktur verwendet und nicht die Rekursion):
static List<string> FolderList = new List<string>();
static void Selection(DirectoryInfo dir)
{
var dirs = dir.GetDirectories("*", SearchOption.AllDirectories);
foreach (var a_dir in dirs)
{
FolderList.Add(dir.FullName);
}
}
Wenn Sie immer noch eine Ausnahme auftreten, müssen Sie Ihre Logik zu einem traditionellen while-Schleife ändern.
Text & Tabellen unten für GetDirectories
:
search:
Der Suchbegriff mit den Namen von Verzeichnisse entsprechen. Dieser Parameter kann eine Kombination aus gültigem Literal Pfad- und Platzhalterzeichen (* und?) Enthalten (siehe Anmerkungen), unterstützt jedoch keine regulären Ausdrücke ( ). Das Standardmuster ist "*", das alle Dateien zurückgibt.
Search:
Einer der Enumerationswerte, ob die Operation Suche spezifiziert> sollte nur das aktuelle Verzeichnis oder alle Unterverzeichnisse
enthalten Wenn Sie Ihre Frage stellten, gab es eine große orange ** So formatieren Sie das Feld ** rechts neben dem Textbereich mit nützlichen Informationen. Es gab auch eine komplette Symbolleiste mit Formatierungshilfen. Und eine ** [?] ** -Taste mit Formatierungshilfe. * Und * einen Vorschaubereich zwischen dem Textbereich und dem Post Your Question-Button (so dass Sie darüber scrollen müssen, um den Button zu finden, um Sie dazu anzuregen, ihn anzuschauen) und zeigen, wie Ihr Beitrag aussehen würde, wenn er gepostet wird . Wenn Sie Ihren Beitrag klarstellen und zeigen, dass Sie sich die Zeit genommen haben, verbessern Sie Ihre Chancen, gute Antworten zu erhalten. –
(Ich habe es bei dieser Gelegenheit für Sie behoben.) –
Schritt durch den Code mit dem Debugger. Es ist viel schneller und informativer, als Fremde zu fragen, was mit dem Code nicht stimmt. –