Robuster Dateiabruf: Behandlung von UnauthorizedAccessException in Directory.GetFiles
Bei Dateisystemvorgängen treten häufig Berechtigungsprobleme auf, was bei Verwendung von UnauthorizedAccessException
zu Directory.GetFiles
führt. Diese Ausnahme stoppt normalerweise den gesamten Prozess, wenn ein einzelnes Verzeichnis gefunden wird, auf das nicht zugegriffen werden kann. Eine robustere Lösung besteht darin, den Verzeichniszugriff individuell zu prüfen.
Dieser verbesserte Ansatz, der unten detailliert beschrieben wird, durchläuft jedes Verzeichnis und ermöglicht so eine reibungslose Handhabung von Zugriffsbeschränkungen.
Lösung zum selektiven Dateiabruf
Die Methode AddFiles
verarbeitet Verzeichnisse rekursiv. Es verwendet Lambda-Ausdrücke, um Dateipfade zu einer Liste hinzuzufügen, wobei Verzeichnisse mit eingeschränktem Zugriff ignoriert werden.
<code class="language-csharp">private static void AddFiles(string path, IList<string> files) { try { foreach (string file in Directory.GetFiles(path)) { files.Add(file); } foreach (string subdirectory in Directory.GetDirectories(path)) { AddFiles(subdirectory, files); } } catch (UnauthorizedAccessException) { // Ignore access denied errors and continue processing other directories. } }</code>
Diese überarbeitete Methode behandelt effizient UnauthorizedAccessException
Ausnahmen innerhalb eines try-catch
Blocks. Das Programm setzt die Ausführung fort und sammelt Dateien aus zugänglichen Verzeichnissen, ohne abzustürzen. Dies sorgt für eine bessere Kontrolle und verhindert eine vorzeitige Beendigung aufgrund von Zugriffsbeschränkungen. Die Verwendung von foreach
-Schleifen verbessert die Lesbarkeit im Vergleich zum ursprünglichen ToList().ForEach()
-Ansatz.
Das obige ist der detaillierte Inhalt vonWie kann ich UnauthorizedAccessException bei Verwendung von Directory.GetFiles ordnungsgemäß behandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!