Je souhaite ajouter des lignes à mon fichier. J'utilise un StreamWriter:
StreamWriter file2 = new StreamWriter(@"c:\file.txt");
file2.WriteLine(someString);
file2.Close();
La sortie de mon fichier doit être plusieurs chaînes en dessous les unes des autres, mais je n'ai qu'une seule ligne, qui est écrasée chaque fois que j'exécute ce code.
Existe-t-il un moyen de laisser le StreamWriter s'ajouter à un fichier existant?
c#
streamwriter
Waypoint
la source
la source
StreamWriter
. Unusing
bloc est une meilleure syntaxe pour cela.using (var stream = new StreamWriter(..)) { stream.WriteLine(..); }
Réponses:
Utilisez plutôt ceci:
Avec cette surcharge du constructeur StreamWriter, vous choisissez si vous ajoutez ou écrasez le fichier.
C # 4 et supérieur offre la syntaxe suivante, que certains trouvent plus lisible:
la source
la source
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 finissent par écraser ce qui existait auparavant.
Vous pouvez résoudre le problème de deux manières: soit avec le
ou en repositionnant explicitement le pointeur de flux vous-même:
la source
Essaye ça:
la source
Remplacez ceci:
avec ça:
true
indique qu'il ajoute du texte.la source
Utilisez ce
StreamWriter
constructeur avec le 2ème paramètre -true
.la source
Une autre option consiste à utiliser System.IO.File.AppendText
Cela équivaut aux surcharges StreamWriter que d'autres ont données.
Aussi File.AppendAllText peut donner une interface un peu plus facile , sans avoir à se soucier d' ouverture et de fermeture du flux. Cependant, vous devrez peut-être vous soucier de mettre vos propres sauts de ligne. :)
la source
En fait, seule la réponse de Jon (5 septembre 2011 à 9h37) avec BaseStream.Seek a fonctionné pour mon cas. Merci Jon! J'avais besoin d' ajouter des lignes à un fichier txt archivé par zip.
la source
Un autre moyen simple consiste à utiliser le
File.AppendText
il ajoute du texte encodé UTF-8 à un fichier existant, ou à un nouveau fichier si le fichier spécifié n'existe pas et renvoie unSystem.IO.StreamWriter
la source
Remplacez cette ligne:
avec ce code:
puis écrivez votre ligne dans le fichier texte comme ceci:
la source