Como adicionar uma nova linha no arquivo txt

129

Gostaria de adicionar uma nova linha com texto ao meu arquivo date.txt, mas, em vez de adicioná-lo ao date.txt existente, o aplicativo está criando um novo arquivo date.txt.

TextWriter tw = new StreamWriter("date.txt");

// write a line of text to the file
tw.WriteLine(DateTime.Now);

// close the stream
tw.Close();

Gostaria de abrir o arquivo txt, adicionar algum texto, fechá-lo e depois depois de clicar em algo: abra date.txt, adicione texto e feche-o novamente.

Para que eu possa obter:

Botão pressionado: txt aberto -> hora atual adicionada e depois fechá-la. Outro botão pressionado, txt abriu -> adicionou o texto "OK" ou "NÃO OK" na mesma linha e feche-o novamente.

Então, meu arquivo txt ficará assim:

2011-11-24 10:00:00 OK
2011-11-25 11:00:00 NOT OK

Como posso fazer isso? Obrigado!

Elfoc
fonte

Respostas:

262

Você poderia fazer isso facilmente usando

File.AppendAllText("date.txt", DateTime.Now.ToString());

Se você precisar de nova linha

File.AppendAllText("date.txt", 
                   DateTime.Now.ToString() + Environment.NewLine);

De qualquer forma, se você precisar do seu código, faça o seguinte:

TextWriter tw = new StreamWriter("date.txt", true);

com o segundo parâmetro dizendo para acrescentar ao arquivo.
Verifique aqui a sintaxe do StreamWriter.

Marco
fonte
12
Se você estiver usando o compilador c # 4 (ou mais recente), pode new StreamWriter("date.txt", append:true)deixar a intenção um pouco mais clara.
Kemp ͩ
21

Nenhuma nova linha:

File.AppendAllText("file.txt", DateTime.Now.ToString());

e, em seguida, para obter uma nova linha após OK:

File.AppendAllText("file.txt", string.Format("{0}{1}", "OK", Environment.NewLine));
Asken
fonte
13
Por favor, use Environment.Newlinee não "\r\n"- nem todos os sistemas concordam com o funcionamento das novas linhas: en.wikipedia.org/wiki/Newline#Representations
kͩeͣmͮpͥ
4

Por que não fazer isso com uma chamada de método:

File.AppendAllLines("file.txt", new[] { DateTime.Now.ToString() });

que fará a nova linha para você e permitirá que você insira várias linhas ao mesmo tempo, se desejar.

kad81
fonte
Eu prefiro isso à resposta aceita; você não precisa especificar nova linha
twoleggedhorse
0
var Line = textBox1.Text + "," + textBox2.Text;

File.AppendAllText(@"C:\Documents\m2.txt", Line + Environment.NewLine);
Mehdi
fonte