Pregunta:
¿Qué es diferente entre FileStream
y StreamWriter
en .Net ?
¿Qué contexto se supone que debes usar? ¿Cuál es su ventaja y desventaja?
¿Es posible combinar estos dos en uno?
fuente
Pregunta:
¿Qué es diferente entre FileStream
y StreamWriter
en .Net ?
¿Qué contexto se supone que debes usar? ¿Cuál es su ventaja y desventaja?
¿Es posible combinar estos dos en uno?
¿Qué es diferente entre FileStream y StreamWriter en dotnet?
A FileStream
es a Stream
. Como todos los Streams, solo se ocupa de byte[]
datos.
A StreamWriter : TextWriter
, es un decorador de Stream. Un TextWriter codifica datos de texto como cadenas o caracteres byte[]
y luego los escribe en el enlace Stream
.
¿Qué contexto se supone que debes usar? ¿Cuál es su ventaja y desventaja?
Utiliza un FileStream desnudo cuando tiene byte[]
datos. Agrega un StreamWriter
cuando desea escribir texto. Utilice un formateador o un serializador para escribir datos más complejos.
¿Es posible combinar estos dos en uno?
Si. Siempre necesitas un Stream para crear un StreamWriter. El método auxiliar System.IO.File.CreateText("path")
los creará en combinación y luego solo tendrá que Dispose () el escritor externo.
FileStream
es un tipo de flujo, que se adapta específicamente a los archivos. Los flujos funcionan de forma nativa con bytes, sin embargoStreamWriter
/ Reader escribirá / leerá texto en cualquier flujo, no solo enFileStream
s. Por ejemplo,MemoryStreams
,NetworkStreams
, etc ..FileStream escribe bytes, StreamWriter escribe texto. Eso es todo.
fuente
Un FileStream está diseñado explícitamente para archivos de trabajo.
Un StreamWriter se puede utilizar para transmitir a cualquier tipo de Stream : sockets de red, archivos, etc.
ScottGu explica muy bien los diferentes objetos Stream aquí: http://www.codeguru.com/Csharp/Csharp/cs_data/streaming/article.php/c4223
fuente
Bueno, de MSDN para
FileStream
:y el MSDN para
StreamWriter
:La diferencia más obvia es que
FileStream
permite operaciones de lectura / escritura, mientras queStreamWriter
es solo escritura.La
StreamWriter
página continúa para agregar:Entonces, una segunda diferencia es que
FileStream
es para bytes, mientras queStreamWriter
es para texto.fuente
Son dos niveles diferentes que se utilizan para enviar información a fuentes de datos conocidas.
A
FileStream
es un tipo de Stream, que es conceptualmente un mecanismo que apunta a una ubicación y puede manejar datos entrantes y / o salientes hacia y desde esa ubicación. Los flujos existen para leer / escribir en archivos, conexiones de red, memoria, tuberías, la consola, oyentes de depuración y seguimiento, y algunos otros tipos de fuentes de datos. Específicamente,FileStream
existe para realizar lecturas y escrituras en el sistema de archivos. La mayoría de las transmisiones tienen un uso de bajo nivel y tratan los datos como bytes.A
StreamWriter
es un contenedor para una secuencia que simplifica el uso de esa secuencia para generar texto sin formato. Expone métodos que toman cadenas en lugar de bytes y realiza las conversiones necesarias hacia y desde matrices de bytes. Hay otros escritores; el otro principal que usaría es elXmlTextWriter
, que facilita la escritura de datos en formato XML . También hay contrapartes de Reader para Writers que envuelven un Stream de manera similar y facilitan la recuperación de los datos.fuente
Una diferencia clave (además de los comentarios anteriores), podría ser que FileStream admite lectura y escritura de acceso aleatorio al disco en cualquier FileStream.Position especificado. Para modificaciones de archivos grandes, eso puede ser invaluable.
fuente