Behandlung von Dateizugriffsausnahmen in Directory.GetFiles()
Bei Verwendung der Directory.GetFiles()
-Methode kann es vorkommen, dass auf bestimmte Ordner oder Dateien im angegebenen Verzeichnispfad nicht zugegriffen werden kann, was zu Ausnahmen führt und den Dateiauflistungsprozess unterbricht. Um diese Einschränkung zu überwinden und weiterhin zugängliche Dateien aufzulisten und gleichzeitig geschützte oder unzugängliche Elemente zu ignorieren, wird ein manueller rekursiver Ansatz empfohlen.
Directory.GetFiles()
unterstützt nativ die Rekursion mithilfe des Parameters AllDirectories
. Allerdings kann diese Methode unzuverlässig sein, wenn der Zugriff auf bestimmte Unterverzeichnisse verweigert wird und der Prozess dadurch abrupt beendet wird. Um dieses Problem zu lösen, ist ein benutzerdefinierter rekursiver Ansatz erforderlich.
Das bereitgestellte Code-Snippet zeigt, wie Zugriffsausnahmen ordnungsgemäß behandelt werden, während Dateien in einem angegebenen Verzeichnis rekursiv aufgelistet werden. Es führt eine neue Methode ApplyAllFiles()
ein, die eine benutzerdefinierte rekursive Suche durchführt.
In ApplyAllFiles()
durchläuft der Code jede Datei im aktuellen Verzeichnis und ruft den bereitgestellten fileAction
-Delegaten auf, um die Datei zu verarbeiten. Anschließend werden die Unterverzeichnisse im aktuellen Verzeichnis aufgelistet und versucht, auf jedes Unterverzeichnis dieselbe ApplyAllFiles()
-Methode anzuwenden.
Wenn beim Versuch, auf ein Unterverzeichnis zuzugreifen, eine Ausnahme auftritt, verschluckt der Code die Ausnahme stillschweigend und stellt so sicher, dass der Prozess ohne Unterbrechung weiterhin zugängliche Dateien auflistet.
Durch die Übernahme dieses Ansatzes können Entwickler Dateien in einem Verzeichnis effizient auflisten und gleichzeitig unzugängliche Ordner oder Dateien ignorieren. Es ermöglicht eine leistungsfähigere Bearbeitung von Dateilisten, insbesondere wenn verschiedene Unterverzeichnisse unterschiedliche Zugriffsrechte haben.
Das obige ist der detaillierte Inhalt vonWie kann ich Dateien rekursiv auflisten und dabei Zugriffsausnahmen in C# ignorieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!