Heim >Backend-Entwicklung >C++ >Wie kann ich Dateien in einer Verzeichnisstruktur sicher verarbeiten und gleichzeitig den Zugriff verweigerte Ausnahmen in C#ignorieren?

Wie kann ich Dateien in einer Verzeichnisstruktur sicher verarbeiten und gleichzeitig den Zugriff verweigerte Ausnahmen in C#ignorieren?

Linda Hamilton
Linda HamiltonOriginal
2025-01-27 23:01:11575Durchsuche

How Can I Safely Process Files in a Directory Structure While Ignoring Access Denied Exceptions in C#?

Verwenden Sie Directory.GetFiles(), um Verzeichnisse sicher zu durchqueren

Beim Durchsuchen von Verzeichnissen mit C# kommt es häufig zu Zugriffsverweigerungsausnahmen aufgrund geschützter Ordner. Um zu verhindern, dass diese Ausnahmen Ihr Programm unterbrechen, sehen wir uns an, wie Sie unzugängliche Verzeichnisse ordnungsgemäß ignorieren und die Verarbeitung zugänglicher Dateien fortsetzen können.

Herausforderung

Die Standardmethode, die Directory.GetFiles() verwendet, löst plötzlich eine Ausnahme aus, wenn auf einen nicht zugreifbaren Ordner stößt, wodurch jede weitere Verarbeitung gestoppt wird.

Rekursive Lösung

Anstatt sich auf den AllDirectories-Parameter zu verlassen, der eine Ausnahme auslöst, implementieren Sie die Rekursion manuell. Dies beinhaltet die Iteration eines Verzeichnisses nach dem anderen, den Versuch, auf seine Dateien zuzugreifen und das rekursive Durchsuchen aller Unterverzeichnisse.

<code class="language-csharp">using System;
using System.IO;

public static class Program
{
    public static void Main()
    {
        string path = ""; // 获取目录路径
        ProcessAllFiles(path, ProcessFile);
    }

    private static void ProcessFile(string path) { /* 在此处添加文件处理代码。 */ }

    private static void ProcessAllFiles(string folder, Action<string> fileAction)
    {
        try
        {
            foreach (string file in Directory.GetFiles(folder))
            {
                fileAction(file);
            }

            foreach (string subDir in Directory.GetDirectories(folder))
            {
                ProcessAllFiles(subDir, fileAction);
            }
        }
        catch (Exception ex)
        {
            // 处理或忽略异常(例如,将其记录下来以便日后查看)。  考虑记录异常类型和路径信息。
            Console.WriteLine($"Error processing directory '{folder}': {ex.Message}");
        }
    }
}</code>

Dieser Code durchsucht iterativ die Verzeichnisstruktur, ignoriert unzugängliche Ordner und fährt mit zugänglichen Dateien fort. Der Catch-Block kann so angepasst werden, dass er die Ausnahme verschluckt oder eine benutzerdefinierte Behandlung durchführt, beispielsweise die Protokollierung. Der verbesserte Code enthält einen try-catch-Block zur Behandlung eventuell auftretender Ausnahmen und zum Drucken einer Fehlermeldung einschließlich der Ausnahmemeldung und des Ordnerpfads, in dem der Fehler aufgetreten ist.

Fazit

Durch die Implementierung einer benutzerdefinierten Rekursion können wir Ausnahmen bei verweigertem Zugriff ignorieren und weiterhin auf Dateien in der Verzeichnisstruktur zugreifen. Dies ermöglicht eine robustere und benutzerfreundlichere Dateiverwaltung, selbst wenn es sich um geschützte oder unzugängliche Ordner handelt.

Das obige ist der detaillierte Inhalt vonWie kann ich Dateien in einer Verzeichnisstruktur sicher verarbeiten und gleichzeitig den Zugriff verweigerte Ausnahmen in C#ignorieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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