Auflösen Directory.GetFiles
ausgelöste UnauthorizedAccessException
Ausnahme
Wenn Sie Directory.GetFiles
zum Abrufen eines Dateipfads verwenden, kann es zu einer UnauthorizedAccessException
-Ausnahme kommen, wenn das Programm keine Zugriffsrechte für einen bestimmten Ordner im angegebenen Verzeichnis hat. Diese Ausnahme tritt auf, nachdem die Methode versucht hat, auf einen nicht zugänglichen Ordner zuzugreifen, was dazu führt, dass der Vorgang vorzeitig beendet wird.
Um dieses Problem zu lösen, wird empfohlen, einen iterativen Ansatz zu verwenden, anstatt zu versuchen, auf einmal auf den gesamten Verzeichnisbaum zuzugreifen. Das folgende Codebeispiel zeigt, wie ein Verzeichnis sicher untersucht und Dateien gesammelt 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 ex) { // 以优雅的方式处理访问被拒绝的异常。 // 可以记录问题或继续处理下一个目录。 // 例如:Console.WriteLine($"Access denied to directory: {path}, Exception: {ex.Message}"); } }</code>
Indem Sie die Verzeichnisse einzeln prüfen, können Sie vermeiden, dass der gesamte Vorgang abgebrochen wird, wenn der Zugriff auf einen bestimmten Ordner verweigert wird. Dadurch kann das Programm weiterhin Dateien in dem Verzeichnis verarbeiten, auf das es Zugriffsrechte hat. Diese Methode verarbeitet die Ergebnisse von Directory.GetFiles
klarer als das ursprüngliche Beispiel, vermeidet unnötige ToList()
- und ForEach()
-Aufrufe und verbessert die Effizienz und Lesbarkeit des Codes.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit „UnauthorizedAccessException'-Fehlern um, wenn ich „Directory.GetFiles' verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!