Ich möchte Zeilen an meine Datei anhängen. Ich benutze einen StreamWriter:
StreamWriter file2 = new StreamWriter(@"c:\file.txt");
file2.WriteLine(someString);
file2.Close();
Die Ausgabe meiner Datei sollte mehrere Zeichenfolgen untereinander sein, aber ich habe nur eine Zeile, die jedes Mal überschrieben wird, wenn ich diesen Code ausführe.
Gibt es eine Möglichkeit, den StreamWriter an eine vorhandene Datei anhängen zu lassen?
c#
streamwriter
Wegpunkt
quelle
quelle
StreamWriter
. Einusing
Block ist dafür eine bessere Syntax.using (var stream = new StreamWriter(..)) { stream.WriteLine(..); }
Antworten:
Verwenden Sie stattdessen Folgendes:
Mit dieser Überladung des StreamWriter-Konstruktors können Sie auswählen, ob Sie die Datei anhängen oder überschreiben möchten.
C # 4 und höher bietet die folgende Syntax, die einige besser lesbar finden:
quelle
quelle
Ich gehe davon aus, dass Sie den gesamten obigen Code jedes Mal ausführen, wenn Sie etwas in die Datei schreiben. Jedes Mal, wenn der Stream für die Datei geöffnet wird, wird der Suchzeiger am Anfang positioniert, sodass alle Schreibvorgänge das überschreiben, was zuvor vorhanden war.
Sie können das Problem auf zwei Arten lösen: entweder mit der praktischen
oder indem Sie den Stream-Zeiger explizit selbst neu positionieren:
quelle
Versuche dies:
quelle
Ersetzen Sie dies:
mit diesem:
true
zeigt an, dass Text angehängt wird.quelle
Verwenden Sie diesen
StreamWriter
Konstruktor mit dem 2. Parameter -true
.quelle
Eine weitere Option ist die Verwendung von System.IO.File.AppendText
Dies entspricht den StreamWriter-Überladungen, die andere angegeben haben.
Auch File.AppendAllText bietet möglicherweise eine etwas einfachere Oberfläche, ohne sich um das Öffnen und Schließen des Streams kümmern zu müssen. Möglicherweise müssen Sie sich dann Sorgen machen, ob Sie Ihre eigenen Zeilenumbrüche einfügen. :) :)
quelle
Eigentlich hat nur Jons Antwort (5. September 11 um 9:37) mit BaseStream.Seek für meinen Fall funktioniert. Danke Jon! Ich musste Zeilen an eine zip-archivierte txt-Datei anhängen .
quelle
Eine einfachere Möglichkeit besteht darin, den
File.AppendText
UTF-8-codierten Text an eine vorhandene Datei oder an eine neue Datei anzuhängen, wenn die angegebene Datei nicht vorhanden ist und a zurückgibtSystem.IO.StreamWriter
quelle
Ersetzen Sie diese Zeile:
mit diesem Code:
und schreiben Sie dann Ihre Zeile wie folgt in die Textdatei:
quelle