Maison >développement back-end >C++ >Comment puis-je vérifier de manière proactive les verrous de fichiers dans C # sans utiliser d'exceptions?

Comment puis-je vérifier de manière proactive les verrous de fichiers dans C # sans utiliser d'exceptions?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-02-02 22:16:11709parcourir

How Can I Proactively Verify File Locks in C# Without Using Exceptions?

Éviter les exceptions lors de la vérification des verrouillage du fichier dans C #

Gérer les conflits d'accès aux fichiers en C # peut être délicat. Cet article présente une méthode proactive pour vérifier la disponibilité des fichiers sans s'appuyer sur la gestion des exceptions, offrant une solution plus robuste. Le problème se pose lorsque vous essayez d'accéder à un fichier qui est actuellement écrit, conduisant à des erreurs de "fichier en utilisation".

Une approche proactive en utilisant FileAccess.Read

Au lieu de compter sur la gestion des exceptions, nous pouvons utiliser FileAccess.Read pour vérifier de manière proactive la disponibilité des fichiers. Cet extrait de code révisé montre une méthode plus efficace et fiable:

<code class="language-csharp">protected virtual bool IsFileLocked(FileInfo file)
{
    using (FileStream stream = file.Open(FileMode.Open, FileAccess.Read, FileShare.None))
    {
        stream.Close();
        return false; // File is accessible
    }
    catch (IOException)
    {
        // File is locked or unavailable
        return true; 
    }
}</code>

Explication

Le code tente d'ouvrir le fichier en mode en lecture seule (FileAccess.Read) avec un accès exclusif (FileShare.None). Si un autre processus maintient un verrou sur le fichier (par exemple, l'écriture), la méthode Open échouera, lançant un IOException. Le bloc try-catch gère ceci, le retour true pour indiquer que le fichier est verrouillé. L'ouverture du fichier réussie signifie que le fichier est disponible et false est renvoyé. Cette approche évite les frais généraux de performance et les problèmes potentiels associés à la compréhension uniquement de la manipulation des exceptions.

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