Abandonnez try/catch et déterminez efficacement l'état de verrouillage du fichier
Utiliser un bloc try-catch pour ouvrir un fichier et intercepter une exception afin de déterminer son état de verrouillage n'est peut-être pas l'approche la plus efficace. Cet article présente une méthode alternative qui ne nécessite pas de bloc try-catch.
Aperçu de la proposition
Cette méthode utilise un objet FileStream pour ouvrir le fichier et définir des paramètres spécifiques d'accès et de partage au fichier. Si une IOException se produit, le code vérifie si le fichier est verrouillé à l'aide de la méthode personnalisée IsFileLocked(), qui vérifie le code d'erreur de l'exception. Si le fichier est verrouillé, le code réessayera d'ouvrir le fichier après un intervalle spécifié.
Détails de mise en œuvre
Le code fourni définit une classe FileManager, qui contient une méthode GetStream() pour obtenir le flux de fichiers. GetStream() tentera à plusieurs reprises d'ouvrir le fichier jusqu'à ce que le nombre de tentatives spécifié soit dépassé ou que le fichier soit ouvert avec succès.
La méthode IsFileLocked() vérifie le code d'erreur associé à l'IOException pour déterminer si le fichier est verrouillé. Les codes d'erreur 32 (violation de partage) et 33 (violation de verrouillage) indiquent que le fichier est verrouillé.
Avantages de cette méthode
Conclusion
Cette méthode fournit un moyen efficace et personnalisable de vérifier le verrouillage des fichiers sans utiliser de blocs try-catch. Cette méthode est particulièrement utile lorsque vous travaillez avec des fichiers susceptibles d'être fréquemment consultés ou verrouillés par d'autres processus.
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!