Acces fichiers... conflits !!!

Signaler
Messages postés
56
Date d'inscription
mercredi 16 mars 2005
Statut
Membre
Dernière intervention
4 août 2005
-
Messages postés
109
Date d'inscription
mardi 13 avril 2004
Statut
Membre
Dernière intervention
4 juin 2008
-
Bonjour ,








Je développe plusieurs petites applications en C# (asp.net) qui
écrivent et lisent dans des fichiers txt.







Malheureusement lorsque j’écris où je lis, je ne contrôle pas
que le fichier soit occupé. Par conséquent, il arrive qu’une application
veuille accéder à un fichier déjà occupé et un message d’erreur apparaît :












« Le processus ne peut pas accéder au fichier
"C:\XXX.txt", car il est en cours d'utilisation par un autre
processus. »



Est-il possible de contrôler que le fichier ne soit pas en
cours d’utilisation








Si vous avez des idées, n’hésitez pas…





Je vous remercie.

4 réponses

Messages postés
305
Date d'inscription
vendredi 18 juillet 2003
Statut
Membre
Dernière intervention
2 août 2010
2
Mets un try .. catch pour intercepter l'erreur lors de l'accés à ton fichier.

Si l'erreur est déclancher alors ton fichier est déjà ouvert sinon tu fais ton traitement.

Théo
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
38
Je crois bien qu'il faut utiliser l'énumération FileShare.
Messages postés
56
Date d'inscription
mercredi 16 mars 2005
Statut
Membre
Dernière intervention
4 août 2005

Je vais essayer le try...catch



Sinon le FileShare que je ne connais pas !



Merci pour vos reponses
Messages postés
109
Date d'inscription
mardi 13 avril 2004
Statut
Membre
Dernière intervention
4 juin 2008

Sinon, comment tu le parcours ton fichier?



Parce qu'une bonne solution est d'utiliser la classe FileStream. Tu
ouvres ton fichier texte avec le constructeur de FileStream(String
path)... Choisis le mode Append... et à la fin de ta procédure, tu
fermes ton FileStream... et tu fais ça pour chaque procédure...



Au moins, tu es sûr d'ouvrir un flux vers le fichier en question
puisqu'il est fermé à la fin de chaque procédure où tu y fais référence.



Par contre, fait gaffe au niveau des performances...

Fait pas un truc du style :



while(i<1000000000) {

fs=new FileStream("C:\\XXX.txt");

//Instructions...

fs.close();

i++;

}

C'est une énorme erreur à ne pas faire. Pense donc à fermer le fichier juste avant le '}' de la procédure!