Les fichiers de détection efficaces sont verrouillés, évitez d'utiliser le bloc d'essai / capture
Dans la programmation, il est un problème courant de déterminer si le fichier est verrouillé sans s'appuyer sur le bloc de capture d'essai. Une solution fiable consiste à utiliser la classe personnalisée
pour former l'opération d'accès aux fichiers:
FileManager
Classe de gestionnaire de fichiers personnalisé:
Détection de verrouillage des fichiers:
<code class="language-c#">public class FileManager { ... private FileStream GetStream(FileAccess fileAccess) { int tries = 0; while (true) { try { return File.Open(_fileName, FileMode.Open, fileAccess, FileShare.None); //尝试打开文件 } catch (IOException e) { if (!IsFileLocked(e)) // 检查文件是否被锁定 throw; if (++tries > _numberOfTries) //如果达到最大尝试次数 throw new MyCustomException("文件锁定时间过长: " + e.Message, e); Thread.Sleep(_timeIntervalBetweenTries); //等待后再重试 } } } ... }</code>
Cette méthode vous permet de répéter l'accès au fichier dans un intervalle spécifié jusqu'à ce que le fichier soit ouvert avec succès ou dépasse le numéro d'essai planifié. En fournissant une méthode de détection de verrouillage de fichiers à grain fin, vous pouvez éviter les frais généraux du bloc de capture d'essai, tout en maintenant la robustesse et la contrôlabilité de l'opération d'accès au fichier.
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!