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

Comment puis-je gérer l'exception UnauthorizedAccessException lors de l'utilisation de Directory.GetFiles ?

Susan Sarandon
Libérer: 2025-01-07 15:18:40
original
584 Les gens l'ont consulté

How Can I Handle UnauthorizedAccessException When Using Directory.GetFiles?

Exception provoquée par la méthode Directory.GetFiles en raison de restrictions d'accès

Lorsque vous accédez à un système de fichiers réseau ou à un système de fichiers dans un environnement contrôlé, vous pouvez rencontrer un accès restreint à certains dossiers. Cela amène des méthodes telles que Directory.GetFiles à lever des exceptions, interrompant l'exécution du programme.

Analyse du problème

Lorsque la méthode Directory.GetFiles rencontre un répertoire inaccessible, elle lèvera une exception UnauthorizedAccessException. Malheureusement, avant de détecter cette exception, la méthode a échoué et ne peut pas récupérer.

Solution : Détecter les répertoires un par un

Pour résoudre ce problème, il est recommandé de sonder un répertoire à la fois au lieu de rechercher de manière récursive dans toute l'arborescence des répertoires. De cette façon, vous pouvez intercepter et gérer les exceptions répertoire par répertoire, évitant ainsi l’arrêt prématuré du programme.

Exemple de mise en œuvre

Ce qui suit est un exemple de méthode qui parcourt une arborescence de répertoires et ajoute des chemins de fichiers à une liste, en excluant les fichiers des répertoires à accès refusé :

<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

Cette méthode garantit que le programme continue son exécution même s'il rencontre un répertoire auquel il n'a pas accès, vous permettant de traiter des fichiers dans un répertoire auquel il a accès. Cette version améliorée évite l'utilisation de ToList().ForEach() et utilise une boucle foreach plus claire et plus lisible, améliorant la maintenabilité du code.

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