Heim > Backend-Entwicklung > C++ > Wie kann ich mit UnauthorizedAccessException umgehen, wenn ich Directory.GetFiles verwende?

Wie kann ich mit UnauthorizedAccessException umgehen, wenn ich Directory.GetFiles verwende?

Susan Sarandon
Freigeben: 2025-01-07 15:18:40
Original
584 Leute haben es durchsucht

How Can I Handle UnauthorizedAccessException When Using Directory.GetFiles?

Ausnahme durch die Directory.GetFiles-Methode aufgrund von Zugriffsbeschränkungen

Beim Zugriff auf ein Netzwerkdateisystem oder ein Dateisystem in einer kontrollierten Umgebung kann es zu eingeschränktem Zugriff auf bestimmte Ordner kommen. Dies führt dazu, dass Methoden wie Directory.GetFiles Ausnahmen auslösen und die Programmausführung unterbrechen.

Problemanalyse

Wenn die Directory.GetFiles-Methode auf ein Verzeichnis trifft, auf das nicht zugegriffen werden kann, löst sie eine UnauthorizedAccessException-Ausnahme aus. Leider ist die Methode vor dem Abfangen dieser Ausnahme fehlgeschlagen und kann nicht wiederhergestellt werden.

Lösung: Verzeichnisse einzeln erkennen

Um dieses Problem zu lösen, wird empfohlen, jeweils ein Verzeichnis zu untersuchen, anstatt den gesamten Verzeichnisbaum rekursiv zu durchsuchen. Auf diese Weise können Sie Ausnahmen pro Verzeichnis abfangen und behandeln und so eine vorzeitige Programmbeendigung vermeiden.

Beispielimplementierung

Das Folgende ist eine Beispielmethode, die einen Verzeichnisbaum durchläuft und Dateipfade zu einer Liste hinzufügt, wobei Dateien aus Verzeichnissen mit verweigertem Zugriff ausgeschlossen 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)
    {
        // 忽略无法访问的目录,继续处理其他目录
    }
}</code>
Nach dem Login kopieren

Diese Methode stellt sicher, dass das Programm auch dann weiter ausgeführt wird, wenn es auf ein Verzeichnis trifft, auf das es keinen Zugriff hat, sodass Sie Dateien in einem Verzeichnis verarbeiten können, auf das Zugriff besteht. Diese verbesserte Version vermeidet die Verwendung von ToList().ForEach() und verwendet eine klarere und besser lesbare foreach-Schleife, wodurch die Wartbarkeit des Codes verbessert wird.

Das obige ist der detaillierte Inhalt vonWie kann ich mit UnauthorizedAccessException umgehen, wenn ich Directory.GetFiles verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage