Vorrei creare un file .txt e scriverlo, e se il file esiste già voglio solo aggiungere qualche altra riga:
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();
}
Ma la prima riga sembra essere sempre sovrascritta ... come posso evitare di scrivere sulla stessa riga (sto usando questo in un ciclo)?
So che è una cosa abbastanza semplice, ma non ho mai usato il WriteLine
metodo prima. Sono totalmente nuovo in C #.
File.Open
delegare internamente a una funzione WinAPI (vedi il prossimo commento) sperando di prevenire le condizioni di gara. La maggior parte delle soluzioni qui non lo fanno e sono ovviamente soggette alle condizioni di gara.
if (file exists) { open file }
è quasi sempre sbagliato in tutti i linguaggi di programmazione! Per .NET la soluzione deve essere utilizzataFile.Open(path, FileMode.Append, FileAccess.ReadWrite)
con flag appropriati.