Warum macht StreamWriter überschreibt meine Datei?
Ich bin mit SteamWriter
etwas zu schreiben, um eine text-Datei, aber seine überschreiben der alten Daten mit den neuen Daten.
Wie kann ich sicherstellen, dass es wird fügen Sie einfach die neuen Daten, die anstelle von überschreiben der alten Daten?
mein code:
class Program
{
const string filename = @"C:\log.txt";
static void Main()
{
FileStream fs;
fs = new FileStream(filename, FileMode.Create, FileAccess.Write);
StreamWriter writer = new StreamWriter(fs);
writer.WriteLine("test");
writer.Close();
fs.Close();
}
}
Als seitliche Anmerkung, ich würde
using
statt des hässlichen schließen am Ende. using (var fs = new FileStream(fileName, FileMode.Create, FileAccess.Write) { using(var writer = new StreamWriter(fs) { writer.WriteLine("test"); } }
InformationsquelleAutor Bxcb Sbdsb | 2012-10-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie
FileMode.Create
, laut MSDN:So müssen Sie
FileMode.Append
stattdessen, wenn Sie möchten, um Inhalte hinzufügen, um das Ende der Datei:InformationsquelleAutor Alvin Wong
Anhängen, um die Datei, die Sie aktualisieren können, die position der stream zu Ende.
On a side note, wenn Sie beabsichtigen, die Datei zu überschreiben, und die Länge der original-Datei ist länger als die Länge der neuen Daten, die Sie verwenden müssen, SetLength() auf das zugrunde liegende stream-Datei, wenn Sie fertig sind schreiben der Datei. In anderen Worten,
FileMode.OpenOrCreate
alsFileMode.Create
wird die Datei überschreiben, und Ihrefs.Seek
sollte getan werden, bevor Sie Sie erstellenStreamWriter
mit derFileStream
Danke für den Hinweis it out, war ich nach den OP-code, so hatte nicht aufgehört zu denken! Cheers.
InformationsquelleAutor Wes
InformationsquelleAutor Steffan Donal
Als andere haben darauf hingewiesen, das problem, ich dachte, ich würde vorschlagen, eine einfachere Lösung
InformationsquelleAutor Bali C
Versuchen, diese
danke für den Hinweis.Aktualisiert
Obwohl ich muss sagen, ich Stimme mit Ihrer Methode zum öffnen einer Datei. Ich würde verwendet haben, eine
using(StreamWriter sW = new StreamWriter("FILE", true)){
wie wäre es jetzt?
Nun, der code ist fehlerhaft. Entfernen Sie die beiden ifs innerhalb der
using
und fügen Sie eine)
nachtrue)
InformationsquelleAutor Karthik