Maison > développement back-end > C++ > Comment gérer les erreurs « UnauthorizedAccessException » lors de l'utilisation de « Directory.GetFiles » ?

Comment gérer les erreurs « UnauthorizedAccessException » lors de l'utilisation de « Directory.GetFiles » ?

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

How to Handle `UnauthorizedAccessException` Errors When Using `Directory.GetFiles`?

Résoudre Directory.GetFileslancer UnauthorizedAccessExceptionException

Lorsque vous utilisez Directory.GetFiles pour obtenir un chemin de fichier, vous pouvez rencontrer une exception UnauthorizedAccessException si le programme ne dispose pas des droits d'accès à un dossier spécifique dans le répertoire spécifié. Cette exception se produit après que la méthode a tenté d'accéder à un dossier inaccessible, provoquant l'arrêt prématuré de l'opération.

Pour résoudre ce problème, il est recommandé d'utiliser une approche itérative plutôt que d'essayer d'accéder à l'intégralité de l'arborescence des répertoires d'un coup. L'exemple de code suivant montre comment sonder un répertoire et collecter des fichiers en toute sécurité :

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)
    {
        // 以优雅的方式处理访问被拒绝的异常。
        // 可以记录问题或继续处理下一个目录。
        // 例如:Console.WriteLine($"Access denied to directory: {path}, Exception: {ex.Message}");
    }
}
Copier après la connexion

En sondant les répertoires un par un, vous pouvez éviter de mettre fin à toute l'opération si l'accès à un dossier spécifique est refusé. Cela permet au programme de continuer à traiter les fichiers dans le répertoire auquel il a les droits d'accès. Cette méthode gère les résultats de Directory.GetFiles plus clairement que l'exemple d'origine, évite les appels ToList() et ForEach() inutiles et améliore l'efficacité et la lisibilité 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!

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