Behandeln Sie elegant die UnauthorizedAccessException-Ausnahme, die auftritt, wenn Directory.GetFiles das Verzeichnis durchläuft
Beim Ausführen von Datei- und Verzeichnisvorgängen kann es bei Verwendung der Directory.GetFiles
-Methode zu UnauthorizedAccessException
-Ausnahmen kommen. Diese Ausnahme tritt auf, wenn eine Methode versucht, auf ein Verzeichnis zuzugreifen, für das der Benutzer nicht über die entsprechenden Berechtigungen verfügt.
Um dieses Problem zu lösen, wird empfohlen, die Verzeichnisse einzeln zu untersuchen, anstatt den gesamten Verzeichnisbaum zu durchsuchen. Dieser Ansatz ermöglicht eine genauere Kontrolle über den Betrieb. Der folgende Code demonstriert einen verbesserten Ansatz:
<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) { // 忽略此目录的访问权限错误,继续处理其他目录 } }</code>
Bei dieser Methode wird UnauthorizedAccessException
erfasst und ordnungsgemäß verarbeitet, sodass das Programm die Ausführung fortsetzen und möglicherweise andere zugängliche Dateien entdecken kann. Die Iteration wird durch die Verzeichnishierarchie fortgesetzt und ruft sich selbst rekursiv auf, um Unterverzeichnisse zu erkunden.
Durch die Verwendung dieser Technik können Sie Directory.GetFiles
Methodenabbrüche aufgrund von Zugriffsverweigerungsfehlern vermeiden und die Kontrolle über den Verzeichnisdurchlaufprozess behalten. Diese Methode verwendet eine foreach
-Schleife anstelle von ToList().ForEach()
, wodurch sie lesbarer und effizienter wird.
Das obige ist der detaillierte Inhalt vonWie kann ich mit UnauthorizedAccessException umgehen, wenn ich Directory.GetFiles zum Durchsuchen von Verzeichnissen verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!