Usando StreamWriter para agregar texto

El siguiente programa debería abrir/crear un archivo y escribir la fecha actual hasta el final cada vez.

using System;
using System.IO;
using System.Text;


namespace roughDraft
{
    class Program
    {
        public static void Main()
        {
            StreamWriter oFile = File.AppendText("baza.txt");
            string output = "Current date and time: " + DateTime.Now.ToString("yyyy.MM.dd hh:mm:ss");


            oFile.WriteLine(output);

            Console.WriteLine(output);

            Console.ReadKey();
        }
    }
}

No sé por qué solo crea un archivo vacío.

preguntado el 30 de junio de 12 a las 16:06

2 Respuestas

Siempre deberías poner StreamWriter objetos en un using declaración para que se cierren correctamente.

using (StreamWriter oFile = File.AppendText("baza.txt"))
{
    string output = "Current date and time: " 
                  + DateTime.Now.ToString("yyyy.MM.dd hh:mm:ss");
    oFile.WriteLine(output);
}

Alternativamente, puede llamar manualmente al Close Método al StreamWriter, Pero el using declaración, para mí, es mucho más fácil y menos propenso a errores.

Respondido el 30 de junio de 12 a las 16:06

O use la descarga. Sin embargo, no respondió a la operación, ya que no explicó por qué su solución no funciona (el búfer no se escribe en el disco a menos que se llame a Flush o Close). - trisped

@FishBasketGordo, su ejemplo me ayudó mucho, pero está incompleto, ahora escribe en el archivo, pero solo si no existe. No existe tal problema cuando se llama al método Close() en su lugar. Tampoco has explicado la razón por la que mi programa no funcionó como lo soñé. Gracias trispeed por tu comentario, ahora estoy 100% satisfecho :) - 0x6B6F77616C74

@kowalt: Entonces using llamadas de declaración dispose que llama flush(true,true) mientras StreamWriter.WriteLine solo escribe en el archivo inmediatamente cuando AutoFlush==true. - Tim Schmelter

Está creando un archivo vacío porque está escribiendo en él pero no cerrando StreamWriter

así oFile.Close();

Respondido el 30 de junio de 12 a las 16:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.