Plusieurs fois, nous obtenons une erreur en essayant d'écrire un fichier sur la plate-forme Windows,
"Le processus ne peut pas accéder au fichier 'XXX' car il est utilisé par un autre processus."
Comment vérifier en C # avant d'écrire au fichier qu'il n'est pas utilisé par un autre processus?
Vous ne pouvez pas, fondamentalement, vous devez essayer d'ouvrir le fichier en écriture, et si vous obtenez une exception, vous ne pouvez pas y écrire :(
Même si vous pouviez faire d'abord une vérification séparée, le résultat serait périmé avant de pouvoir commencer à écrire - vous pourriez toujours vous retrouver avec l'exception plus tard.
Ce serait bien si le cadre fournissait une méthode TryOpen
, certes ...
Dans ce cas, la seule option consiste à intercepter l’exception générée et à la gérer de manière appropriée. Voir ces deux autres threads SO pour une discussion complète:
Vous devez close
votre fichier après l'avoir utilisé sur votre code:
FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read); //file is opened
//you use the file here
file.Close(); //then you must to close the file
Vous devez simplement essayer l’ouverture avec l’accès de partage que vous souhaitez et gérer l’erreur générée.
Remarque: Parfois, le fichier ne s'ouvre pas simplement parce que les droits de partage de fichiers que vous avez spécifiés sont en conflit avec les droits de partage de fichiers avec lesquels quelqu'un a déjà ouvert le fichier.
S'il vous plaît voir ma réponse ici pour plus d'informations .
Essayez de mettre la commande open dans une instruction try-catch. Si le fichier est utilisé, une exception IOException sera levée.
Essayez de renommer le fichier si vous pouvez le renommer, puis confirmez qu'aucun autre processus n'accède à ce fichier. Enfin, assurez-vous que vous avez renommé le même fichier dans le même dossier.