Résoudre Directory.GetFiles
lancer UnauthorizedAccessException
Exception
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}"); } }
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!