Gostaria de criar um arquivo .txt e escrever nele, e se o arquivo já existir, quero acrescentar mais algumas linhas:
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();
}
Mas a primeira linha parece sempre ser substituída ... como posso evitar escrever na mesma linha (estou usando isso em um loop)?
Eu sei que é uma coisa bem simples, mas nunca usei o WriteLine
método antes. Eu sou totalmente novo em c #.
File.Open
delegar internamente a uma função WinAPI (consulte o próximo comentário), esperançosamente, impedindo a condição de corrida. A maioria das soluções aqui não faz isso e está obviamente sujeita às condições da corrida.
if (file exists) { open file }
quase sempre está errado em todas as linguagens de programação! Para .NET, a solução é usarFile.Open(path, FileMode.Append, FileAccess.ReadWrite)
com sinalizadores apropriados.