Heim >Backend-Entwicklung >C++ >Wie kann ich Dateien in einer Verzeichnisstruktur sicher verarbeiten und gleichzeitig den Zugriff verweigerte Ausnahmen in C#ignorieren?
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.
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.
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.
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!