Pregunta:FileStream vs/differences StreamWriter?
¿Qué es diferente entre FileStream y StreamWriter en dotnet?
¿Qué contexto se supone que debes usar? ¿Cuál es su ventaja y desventaja?
¿Es posible combinar estos dos en uno?
Pregunta:FileStream vs/differences StreamWriter?
¿Qué es diferente entre FileStream y StreamWriter en dotnet?
¿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 un Stream
. Al igual que todas las transmisiones, solo se trata de byte[]
de datos.
A StreamWriter : TextWriter
, es un decorador de secuencias. Un TextWriter codifica datos de texto como cadena o char a byte[]
y luego lo escribe en el Stream
vinculado.
¿Qué contexto se supone que debes usarlo? ¿Cuál es su ventaja y desventaja?
Utiliza un FileStream sin formato cuando tiene datos byte[]
. Agregue un StreamWriter
cuando desee escribir texto. Use un formateador o un serializador para escribir datos más complejos.
¿Es posible combinar estos dos en uno?
Sí. Siempre necesita un Stream para crear un StreamWriter. El método de ayuda System.IO.File.CreateText("path")
los creará en combinación y solo tendrá que deshacerse del escritor externo.
FileStream escribe bytes, StreamWriter escribe texto. Eso es todo.
En realidad, eso no es "todo" ... Pero es una diferencia correcta. – David
Un FileStream está diseñado expresamente para archivos de trabajo.
Un StreamWriter se puede utilizar para transmitir a cualquier tipo de Stream - conectores de red, archivos, etc.
ScottGu explica los diferentes objetos de flujo bastante bien aquí: http://www.codeguru.com/Csharp/Csharp/cs_data/streaming/article.php/c4223
Excelente referencia para transmisiones, aunque no cubre transmisiones R/W de acceso aleatorio. Especialmente la información de serialización/deserialización y la demostración de flujos no de archivos son muy útiles. +1 – ThunderGr
Bueno, desde el MSDN para FileStream
:
Expone un flujo alrededor de un archivo, admitiendo operaciones de lectura y escritura síncronas y asíncronas.
y la MSDN para StreamWriter
:
implementa un TextWriter para la escritura de caracteres a una corriente en una codificación particular.
La diferencia más obvia es que FileStream
permite operaciones de lectura/escritura, mientras que StreamWriter
es escribir solamente.
La página StreamWriter
va a añadir:
StreamWriter está diseñado para la salida de caracteres en una codificación particular, mientras que las clases derivadas de corriente están diseñados para entrada y salida de bytes.
Así que una segunda diferencia es que FileStream
es para bytes, mientras que StreamWriter
es para texto.
Son dos niveles diferentes que se utilizan para generar información en orígenes de datos conocidos.
FileStream es un tipo de Stream, que conceptualmente es un mecanismo que apunta a alguna ubicación y puede manejar datos entrantes y/o salientes desde y hacia esa ubicación. Existen secuencias para leer/escribir en archivos, conexiones de red, memoria, tuberías, consola, detectores de depuración y rastreo, y algunos otros tipos de fuentes de datos. Específicamente, existe FileStream para realizar lecturas y escrituras en el sistema de archivos. La mayoría de las transmisiones tienen un uso bastante bajo y tratan los datos como bytes.
Un StreamWriter es un contenedor para un flujo que simplifica el uso de ese flujo para producir 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 utilizaría es XmlTextWriter, que facilita la escritura de datos en formato XML. También hay contrapartes de Reader para los escritores que envuelven de manera similar un flujo y facilitan la recuperación de los datos.
Una diferencia clave (además de los comentarios anteriores), podría ser que FileStream admite lectura y escritura de accesos de disco aleatorios a cualquier FileStream.Position especificada. Para modificaciones de archivos grandes, eso puede ser invaluable.
También es importante tener en cuenta que 'FileStream' es un tipo de transmisión, que se adapta específicamente a los archivos. Las secuencias funcionan de forma nativa con bytes, sin embargo, 'StreamWriter'/Reader escribirá/leerá texto en * cualquier * secuencia, no solo' FileStream's. Por ejemplo, 'MemoryStreams',' NetworkStreams', etc. – iliketocode