Lorsque vous parcourez des répertoires à l'aide de C#, il est courant de rencontrer des exceptions d'accès refusé en raison de dossiers protégés. Pour éviter que ces exceptions n'interrompent votre programme, explorons comment ignorer gracieusement les répertoires inaccessibles et continuer à traiter les fichiers accessibles.
La méthode standard utilisant Directory.GetFiles() lèvera soudainement une exception lorsqu'elle rencontrera un dossier inaccessible, arrêtant tout traitement ultérieur.
Au lieu de vous fier au paramètre AllDirectories, qui lève une exception, implémentez la récursivité manuellement. Cela implique de parcourir un répertoire à la fois, d'essayer d'accéder à ses fichiers et d'explorer de manière récursive tous les sous-répertoires.
using System; using System.IO; public static class Program { public static void Main() { string path = ""; // 获取目录路径 ProcessAllFiles(path, ProcessFile); } private static void ProcessFile(string path) { /* 在此处添加文件处理代码。 */ } private static void ProcessAllFiles(string folder, Action<string> fileAction) { try { foreach (string file in Directory.GetFiles(folder)) { fileAction(file); } foreach (string subDir in Directory.GetDirectories(folder)) { ProcessAllFiles(subDir, fileAction); } } catch (Exception ex) { // 处理或忽略异常(例如,将其记录下来以便日后查看)。 考虑记录异常类型和路径信息。 Console.WriteLine($"Error processing directory '{folder}': {ex.Message}"); } } }
Ce code explore de manière itérative la structure des répertoires, en ignorant les dossiers inaccessibles et en continuant avec les fichiers accessibles. Le bloc catch peut être personnalisé pour avaler l'exception ou effectuer une gestion personnalisée, telle que sa journalisation. Le code amélioré comprend un bloc try-catch
pour gérer toutes les exceptions pouvant survenir et imprimer un message d'erreur comprenant le message d'exception et le chemin du dossier où l'erreur s'est produite.
En implémentant une récursivité personnalisée, nous pouvons ignorer les exceptions d'accès refusé et continuer à accéder aux fichiers dans la structure de répertoires. Cela permet une gestion des fichiers plus robuste et plus conviviale, même lorsqu'il s'agit de dossiers protégés ou inaccessibles.
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!