Ich möchte eine TXT-Datei erstellen und in diese schreiben. Wenn die Datei bereits vorhanden ist, möchte ich nur noch einige Zeilen anhängen:
string path = @"E:\AppServ\Example.txt";
if (!File.Exists(path))
{
File.Create(path);
TextWriter tw = new StreamWriter(path);
tw.WriteLine("The very first line!");
tw.Close();
}
else if (File.Exists(path))
{
TextWriter tw = new StreamWriter(path);
tw.WriteLine("The next line!");
tw.Close();
}
Aber die erste Zeile scheint immer überschrieben zu werden ... wie kann ich vermeiden, in derselben Zeile zu schreiben (ich verwende dies in einer Schleife)?
Ich weiß, dass es eine ziemlich einfache Sache ist, aber ich habe die WriteLine
Methode noch nie benutzt . Ich bin völlig neu in C #.
File.Open
intern an eine WinAPI-Funktion delegiert wird (siehe nächster Kommentar), um hoffentlich die Rennbedingung zu verhindern. Die meisten Lösungen hier tun dies nicht und unterliegen offensichtlich den Rennbedingungen.
if (file exists) { open file }
ist fast immer in allen Programmiersprachen falsch! Für .NET besteht die Lösung darin,File.Open(path, FileMode.Append, FileAccess.ReadWrite)
mit entsprechenden Flags zu verwenden.