Cómo agregar una nueva línea al archivo txt

129

Me gustaría agregar una nueva línea con texto a mi archivo date.txt, pero en lugar de agregarlo a date.txt existente, la aplicación está creando un nuevo archivo 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();

Me gustaría abrir el archivo txt, agregar texto, cerrarlo y luego hacer clic en algo: abrir date.txt, agregar texto y cerrarlo nuevamente.

Entonces puedo obtener:

Botón presionado: txt abierto -> hora actual agregada, luego ciérrela. Se presionó otro botón, txt se abrió -> agregó el texto "OK" o "NOT OK" en la misma línea, luego ciérrelo nuevamente.

Entonces mi archivo txt se verá así:

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

¿Cómo puedo hacer esto? ¡Gracias!

Elfoc
fuente

Respuestas:

262

Podrías hacerlo fácilmente usando

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

Si necesitas nueva línea

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

De todos modos, si necesita su código, haga esto:

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

con el segundo parámetro diciendo que se agregue al archivo.
Verifique aquí la sintaxis de StreamWriter.

Marco
fuente
12
Si está utilizando el compilador c # 4 (o más reciente), puede ponerlo new StreamWriter("date.txt", append:true)para que la intención sea un poco más clara.
kͩeͣmͮpͥ ͩ
21

No hay nueva línea:

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

y luego para obtener una nueva línea después de OK:

File.AppendAllText("file.txt", string.Format("{0}{1}", "OK", Environment.NewLine));
Asken
fuente
13
Utilice Environment.Newliney no "\r\n": no todos los sistemas están de acuerdo en cómo funcionan las líneas nuevas: en.wikipedia.org/wiki/Newline#Representations
kͩeͣmͮpͥ ͩ
4

¿Por qué no hacerlo con una llamada a un método?

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

que hará la nueva línea por usted y le permitirá insertar varias líneas a la vez si lo desea.

kad81
fuente
Prefiero esto a la respuesta aceptada; no necesita especificar una nueva línea
twoleggedhorse
0
var Line = textBox1.Text + "," + textBox2.Text;

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