Récupération de fichiers robuste : gestion de l'exception UnauthorizedAccessException dans Directory.GetFiles
Les opérations du système de fichiers rencontrent souvent des problèmes d'autorisation, ce qui entraîne UnauthorizedAccessException
lors de l'utilisation de Directory.GetFiles
. Cette exception arrête généralement l'ensemble du processus si un seul répertoire inaccessible est rencontré. Une solution plus robuste consiste à vérifier individuellement l'accès au répertoire.
Cette approche améliorée, détaillée ci-dessous, parcourt chaque répertoire, permettant une gestion gracieuse des restrictions d'accès.
Solution de récupération sélective de fichiers
La méthode AddFiles
traite les répertoires de manière récursive. Il utilise des expressions lambda pour ajouter des chemins de fichiers à une liste, en ignorant les répertoires à accès restreint.
<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) { // Ignore access denied errors and continue processing other directories. } }</code>
Cette méthode révisée gère efficacement les UnauthorizedAccessException
exceptions au sein d'un bloc try-catch
. Le programme continue son exécution, collectant les fichiers des répertoires accessibles sans planter. Cela offre un meilleur contrôle et évite une résiliation prématurée en raison de limitations d'accès. L'utilisation de boucles foreach
améliore la lisibilité par rapport à l'approche ToList().ForEach()
originale.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!