Maison >développement back-end >C++ >Comment puis-je tester de manière fiable l'accès en écriture à un répertoire en C# ?

Comment puis-je tester de manière fiable l'accès en écriture à un répertoire en C# ?

DDD
DDDoriginal
2025-01-09 07:37:45726parcourir

How Can I Reliably Test Write Access to a Directory in C#?

Une méthode plus robuste pour vérifier l'accès en écriture à un répertoire en C#

La vérification directe des autorisations d'écriture dans le répertoire peut s'avérer peu fiable. La simple requête des autorisations ne garantit pas un accès réel en écriture. Une approche plus fiable consiste à tenter une opération d'écriture.

Voici une méthode améliorée :

<code class="language-csharp">public bool IsDirectoryWritable(string dirPath, bool throwIfFails = false)
{
    try
    {
        // Create a temporary file to test write access.  It's automatically deleted.
        using (FileStream fs = File.Create(Path.Combine(dirPath, Path.GetRandomFileName()), 1, FileOptions.DeleteOnClose)) { }
        return true;
    }
    catch (Exception ex)
    {
        if (throwIfFails)
            throw; // Re-throw the exception for higher-level handling
        else
            return false;
    }
}</code>

Cette fonction tente de créer un fichier temporaire dans le répertoire cible. Le FileOptions.DeleteOnClose garantit que le fichier est automatiquement supprimé, sans laisser de trace. Le succès indique un accès en écriture ; l'échec renvoie false (ou lève l'exception si throwIfFails est vrai). Cela teste directement la capacité d’écriture, évitant ainsi les pièges liés au seul contrôle des autorisations. C'est concis et facile à comprendre.

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:
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