Maison > développement back-end > C++ > Comment puis-je gérer UnauthorizedAccessException lors de l'utilisation de Directory.GetFiles pour parcourir des répertoires ?

Comment puis-je gérer UnauthorizedAccessException lors de l'utilisation de Directory.GetFiles pour parcourir des répertoires ?

Mary-Kate Olsen
Libérer: 2025-01-07 15:06:44
original
851 Les gens l'ont consulté

How Can I Handle UnauthorizedAccessException When Using Directory.GetFiles to Traverse Directories?

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal