Maison > développement back-end > C++ > Comment puis-je ignorer les erreurs d'autorisation lors de l'utilisation de Directory.GetFiles() ?

Comment puis-je ignorer les erreurs d'autorisation lors de l'utilisation de Directory.GetFiles() ?

DDD
Libérer: 2025-01-27 23:06:10
original
826 Les gens l'ont consulté

How Can I Ignore Permission Errors When Using Directory.GetFiles()?

Gérer avec élégance les problèmes d'autorisation de fichiers et de dossiers dans Directory.GetFiles()

Lorsque vous utilisez Directory.GetFiles() pour énumérer des fichiers dans un répertoire, vous pouvez rencontrer des obstacles si vous rencontrez un dossier ou un fichier protégé. Cela peut entraîner l'arrêt soudain du processus de listage des fichiers, à l'exception d'une exception. Mais que se passe-t-il si vous souhaitez ignorer ces restrictions et continuer à parcourir les fichiers accessibles ?

La clé est d'abandonner les AllDirectories paramètres et de gérer la récursivité manuellement. En vérifiant chaque sous-répertoire individuellement, vous pouvez avoir un contrôle plus granulaire sur le processus.

Considérez l'extrait de code suivant :

<code class="language-csharp">using System;
using System.IO;

static class Program
{
    static void Main()
    {
        string path = ""; // TODO
        ApplyAllFiles(path, ProcessFile);
    }
    static void ProcessFile(string path) {/* ... */}
    static void ApplyAllFiles(string folder, Action<string> fileAction)
    {
        try
        {
            foreach (string file in Directory.GetFiles(folder))
            {
                fileAction(file);
            }
        }
        catch (UnauthorizedAccessException)
        {
            // 处理异常
        }
        catch (Exception ex)
        {
            // 处理其他异常
        }

        foreach (string subDir in Directory.GetDirectories(folder))
        {
            try
            {
                ApplyAllFiles(subDir, fileAction);
            }
            catch (UnauthorizedAccessException)
            {
                // 处理异常,例如记录错误信息或忽略
            }
            catch (Exception ex)
            {
                // 处理其他潜在异常
            }
        }
    }
}</code>
Copier après la connexion

Dans ce code, nous utilisons un délégué (Action<string>) pour préciser l'action à effectuer sur chaque fichier trouvé. La méthode ApplyAllFiles() explore récursivement les sous-répertoires, capturant n'importe quel UnauthorizedAccessException et poursuivant son exploration.

En gérant manuellement la récursivité, vous pouvez contourner efficacement les dossiers ou fichiers inaccessibles, garantissant que seuls les éléments autorisés sont traités sans interrompre les opérations de votre liste de fichiers. Le code amélioré gère également les exceptions pour Directory.GetFiles afin de garantir un programme plus robuste.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal