Acces fichiers... conflits !!!

SW_87 Messages postés 56 Date d'inscription mercredi 16 mars 2005 Statut Membre Dernière intervention 4 août 2005 - 21 juil. 2005 à 17:37
Chris_LaFouine Messages postés 109 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 4 juin 2008 - 26 juil. 2005 à 11:42
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

cs_RMI Messages postés 305 Date d'inscription vendredi 18 juillet 2003 Statut Membre Dernière intervention 2 août 2010 2
21 juil. 2005 à 18:03
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
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
21 juil. 2005 à 18:15
Je crois bien qu'il faut utiliser l'énumération FileShare.
0
SW_87 Messages postés 56 Date d'inscription mercredi 16 mars 2005 Statut Membre Dernière intervention 4 août 2005
22 juil. 2005 à 09:17
Je vais essayer le try...catch



Sinon le FileShare que je ne connais pas !



Merci pour vos reponses
0
Chris_LaFouine Messages postés 109 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 4 juin 2008
26 juil. 2005 à 11:42
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!
0
Rejoignez-nous