web-dev-qa-db-fra.com

Fichier utilisé par un autre processus

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?

20
NileshChauhan

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

16
Jon Skeet

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:

8
Noldorin

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
7
Ionică Bizău

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 .

2
Brian R. Bondy

Essayez de mettre la commande open dans une instruction try-catch. Si le fichier est utilisé, une exception IOException sera levée.

1
David Božjak

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.

0
KUMARARAJA