¿Cuál es la diferencia en la funcionalidad entre StreamWriter.Flush()
y StreamWriter.Close()
?¿Cuál es la diferencia entre StreamWriter.Flush() y StreamWriter.Close()?
Cuando mis datos no se escribieron correctamente en un archivo, agregué Flush()
y Close()
al final de mi código. Sin embargo, me di cuenta de que agregar Flush()
o Close()
permitía que los datos se escribieran correctamente.
No pude ver exactamente qué hace cada uno de estos métodos cuando leo los documentos de MSDN; Solo descubrí que uno u otro es necesario para garantizar que los datos estén escritos correctamente. Cualquier otra explicación sería muy apreciada.
Dónde s
es una cadena que ser escrito, esto es lo que se ve mi código como actualmente:
StreamWriter sw = File.CreateText("TextOutput.txt");
sw.Write(s);
sw.Flush();
sw.Close();
Con base en la retroalimentación de las respuestas, me he reescrito el código en un using
bloque, que implementa IDisposable
y se ocupará automáticamente de escribir la secuencia en el archivo cuando se elimine el objeto:
using (StreamWriter sw = File.CreateText("TextOutput.txt"))
{
sw.Write(s);
}
Esto porque Stream.Dispose llama a Close() – munissor
para ser claro, enapsulating un objeto 'StreamWriter' en un bloque' using' (o 'try' /' catch') obligará al objeto a cerrarse? –
@Ben - encapsularlo en un try/catch _no lo obligará a cerrar. Encapsular su llamada '.Close()' en un bloque 'finally' o' using' y en un bloque de uso es mucho más conveniente. –