
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!
Comment résoudre le problème selon lequel les CAO ne peuvent pas être copiés dans le presse-papiers
Vérifiez l'état du port occupé dans Windows
Une mémoire capable d'échanger des informations directement avec le CPU est une
Qu'est-ce qu'une base de données relationnelle
Quels sont les systèmes Linux courants ?
Vérifier la taille du dossier sous Linux
css
Pourquoi vue.js signale-t-il une erreur ?