Gérer avec élégance l'exception UnauthorizedAccessException qui se produit lorsque Directory.GetFiles parcourt le répertoire
Lors de l'exécution d'opérations sur les fichiers et les répertoires, vous pouvez rencontrer des Directory.GetFiles
exceptions lors de l'utilisation de la méthode UnauthorizedAccessException
. Cette exception se produit lorsqu'une méthode tente d'accéder à un répertoire pour lequel l'utilisateur ne dispose pas des autorisations appropriées.
Pour résoudre ce problème, il est recommandé de sonder les répertoires un par un au lieu de parcourir toute l'arborescence des répertoires. Cette approche permet un contrôle plus fin des opérations. Le code suivant démontre une approche améliorée :
<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>
Dans cette méthode, UnauthorizedAccessException
est capturé et géré avec élégance, permettant au programme de poursuivre son exécution et éventuellement de découvrir d'autres fichiers accessibles. L'itération se poursuit à travers la hiérarchie des répertoires, s'appelant récursivement pour explorer les sous-répertoires.
En utilisant cette technique, vous pouvez éviter Directory.GetFiles
l'arrêt de la méthode en raison d'erreurs d'accès refusé et garder le contrôle du processus de traversée du répertoire. Cette méthode utilise une boucle foreach
au lieu de ToList().ForEach()
, la rendant plus lisible et efficace.
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!