
Récupération de fichiers robuste : gestion de l'exception UnauthorizedAccessException dans Directory.GetFiles
Les opérations du système de fichiers rencontrent souvent des problèmes d'autorisation, ce qui entraîne UnauthorizedAccessException lors de l'utilisation de Directory.GetFiles. Cette exception arrête généralement l'ensemble du processus si un seul répertoire inaccessible est rencontré. Une solution plus robuste consiste à vérifier individuellement l'accès au répertoire.
Cette approche améliorée, détaillée ci-dessous, parcourt chaque répertoire, permettant une gestion gracieuse des restrictions d'accès.
Solution de récupération sélective de fichiers
La méthode AddFiles traite les répertoires de manière récursive. Il utilise des expressions lambda pour ajouter des chemins de fichiers à une liste, en ignorant les répertoires à accès restreint.
<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)
{
// Ignore access denied errors and continue processing other directories.
}
}</code>Cette méthode révisée gère efficacement les UnauthorizedAccessException exceptions au sein d'un bloc try-catch. Le programme continue son exécution, collectant les fichiers des répertoires accessibles sans planter. Cela offre un meilleur contrôle et évite une résiliation prématurée en raison de limitations d'accès. L'utilisation de boucles foreach améliore la lisibilité par rapport à l'approche ToList().ForEach() originale.
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!
Comment résoudre le problème selon lequel les CAO ne peuvent pas être copiés dans le presse-papiers
Vérifiez l'état du port occupé dans Windows
Une mémoire capable d'échanger des informations directement avec le CPU est une
Qu'est-ce qu'une base de données relationnelle
Quels sont les systèmes Linux courants ?
Vérifier la taille du dossier sous Linux
css
Pourquoi vue.js signale-t-il une erreur ?