[Résolu] [C#] Création puis ouverture d'un fichier => problème

Création puis ouverture d'un fichier => problème [Résolu] [C#] - C#/.NET managed - Programmation

Marsh Posté le 09-10-2006 à 11:43:21    

Bonjour à tous,
 
J'ai un bout de code qui crée un fichier puis l'ouvre en écriture.  
Le problème, c'est que j'ai à chaque fois l'IOException suivante :  
The process cannot access the file 'C:\file.txt' because it is being used by another process.
 
Apparemment, le fait de créer le fichier et de l'ouvrir juste après semble poser problème.  
Voici mon code :  

Code :
  1. File.Create("C:\file.txt" );
  2. using (StreamWriter writer = new StreamWriter("C:\file.txt", true))  // -> exception ici
  3. {
  4.   ...
  5. }


Merci bien si vous avez une idée... :)


Message édité par Roodie le 10-10-2006 à 09:46:20
Reply

Marsh Posté le 09-10-2006 à 11:43:21   

Reply

Marsh Posté le 09-10-2006 à 12:02:09    

Code :
  1. c:\\\\file.txt

?


Message édité par _darkalt3_ le 09-10-2006 à 12:02:32

---------------
Töp of the plöp
Reply

Marsh Posté le 09-10-2006 à 14:02:18    

en plus du \\ y'a un truc que je ne pige pas...
 
le "open" permet de créer le fichier de toute façon, alors je ne vois pas quel est le besoin de le créer au préalable...

Reply

Marsh Posté le 09-10-2006 à 14:25:34    

J'ai mal posté mon code. En fait, voici le code :  

Code :
  1. File.Create(@"C:\file.txt" );
  2. using (StreamWriter writer = new StreamWriter(@"C:\file.txt", true))  // -> exception ici
  3. {
  4.   writer.WriteLine(message);
  5.   writer.Flush();
  6.   writer.Close();
  7. }


Et ce code plante au "using..." :(

Reply

Marsh Posté le 09-10-2006 à 14:40:30    

J'ai fait le test ultime :  
Ce test plante :

Code :
  1. FileStream theFile = File.Create(@"C:\file.txt" );
  2. StreamWriter writer = new StreamWriter(@"C:\log\_test.txt" );


Ce test marche :  

Code :
  1. FileStream theFile = File.Create(@"C:\file.txt" );
  2. StreamWriter writer = new StreamWriter(theFile);


Bizarre non ?

Message cité 1 fois
Message édité par Roodie le 09-10-2006 à 14:41:38
Reply

Marsh Posté le 09-10-2006 à 14:41:25    

Roodie a écrit :

J'ai mal posté mon code. En fait, voici le code :  

Code :
  1. File.Create(@"C:\file.txt" );
  2. using (StreamWriter writer = new StreamWriter(@"C:\file.txt", true))  // -> exception ici
  3. {
  4.   writer.WriteLine(message);
  5.   writer.Flush();
  6.   writer.Close();
  7. }


Et ce code plante au "using..." :(


ben oui mais y'a toujours qu'un '\' dans ton nom de fichier.


---------------
Töp of the plöp
Reply

Marsh Posté le 09-10-2006 à 14:43:18    

nan _darkalt3_ :)

Code :
  1. File.Create(@"C:\file.txt" );


équivalent à :  

Code :
  1. File.Create("C:\\file.txt" );


Merci bien. Par contre, regarde mon post au-dessus :)

Reply

Marsh Posté le 09-10-2006 à 15:03:53    

Roodie a écrit :

J'ai fait le test ultime :  
Ce test plante :

Code :
  1. FileStream theFile = File.Create(@"C:\file.txt" );
  2. StreamWriter writer = new StreamWriter(@"C:\file.txt" );


Ce test marche :  

Code :
  1. FileStream theFile = File.Create(@"C:\file.txt" );
  2. StreamWriter writer = new StreamWriter(theFile);


Bizarre non ?


Ben ça c'est carrément normal hein...
 
1/ de toute façon il faut utiliser la seconde solution, et pas la première
2/ normal que le premier exemple plante, puisque c:\file.txt est déjà ouvert et locké par l'objet "theFile". Il faut détruire "thefile" avant de tenter d'ouvrir à nouveau ton fichier...

Reply

Marsh Posté le 09-10-2006 à 21:26:28    

MagicBuzz a écrit :

Ben ça c'est carrément normal hein...
 
1/ de toute façon il faut utiliser la seconde solution, et pas la première
2/ normal que le premier exemple plante, puisque c:\file.txt est déjà ouvert et locké par l'objet "theFile". Il faut détruire "thefile" avant de tenter d'ouvrir à nouveau ton fichier...


+1 :jap:


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 10-10-2006 à 09:46:06    

Bin en fait, c'est ça : on ne peut pas être à 2 en écriture :)
Merci bien de votre aide :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed