184 votes

Ajouter des lignes dans un fichier utilisant un StreamWriter

J’ai envie d’ajouter des lignes dans mon fichier. J’utilise un StreamWriter :

La sortie de mon fichier devrait être plusieurs chaînes au-dessous de l’autre, mais je n’ai qu’une seule ligne, qui est remplacée chaque fois que je lance ce code.

Est-il possible de laisser le StreamWriter à ajouter à un fichier existant ?

308voto

Øyvind Bråthen Points 25211

Utilisez ceci à la place:

 new StreamWriter("c:\\file.txt", true);
 

Avec cette surcharge du constructeur StreamWriter, vous choisissez d’ajouter ou de remplacer le fichier.

154voto

Andrey Taptunov Points 4442
 using (FileStream fs = new FileStream(fileName,FileMode.Append, FileAccess.Write))
 using (StreamWriter sw = new StreamWriter(fs))
 {
    sw.WriteLine(something);
 }

14voto

Jon Points 194296

Je suppose que vous exécutez tout le code ci-dessus chaque fois que vous écrivez quelque chose dans le fichier. Chaque fois que le flux du fichier est ouvert, son pointeur de recherche est positionné au début de sorte que toutes les écritures écrasent ce qui était auparavant.

Vous pouvez résoudre le problème de deux manières: soit avec le

 file2 = new StreamWriter("c:/file.txt", true);
 

ou en repositionnant explicitement le pointeur de flux vous-même:

 file2 = new StreamWriter("c:/file.txt");
file2.BaseStream.Seek(0, SeekOrigin.End);
 

10voto

Marco Points 29879

Essaye ça:

 StreamWriter file2 = new StreamWriter(@"c:\file.txt", true);
file2.WriteLine(someString);
file2.Close();
 

7voto

Waqas Points 4802

Remplacez ceci:

 StreamWriter file2 = new StreamWriter("c:/file.txt");
 

avec ça:

 StreamWriter file2 = new StreamWriter("c:/file.txt", true);
 

true indique qu'il ajoute du texte.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X