Para ampliar un poco sobre otras respuestas aquí, y ayudar a explicar gran parte del código de ejemplo que verá salpicado, la mayoría de las veces no lee y escribe directamente en una transmisión. Las transmisiones son un medio de bajo nivel para transferir datos.
Observará que las funciones de lectura y escritura están orientadas por bytes, p. Ej. WriteByte() No hay funciones para tratar enteros, cadenas, etc. Esto hace que la transmisión sea de propósito general, pero menos fácil de usar si, por ejemplo, solo desea transferir texto.
Sin embargo, .NET proporciona clases que convierten entre los tipos nativos y la interfaz de transmisión de bajo nivel, y transfiere los datos ao desde la transmisión por usted. Algunos notables tales clases son:
StreamWriter // Badly named. Should be TextWriter.
StreamReader // Badly named. Should be TextReader.
BinaryWriter
BinaryReader
Para utilizar estos, en primer lugar se adquiere el torrente, a continuación, crear una de las clases anteriores y asociarlo con la corriente. P.ej.
MemoryStream memoryStream = new MemoryStream();
StreamWriter myStreamWriter = new StreamWriter(memoryStream);
StreamReader y StreamWriter la conversión entre tipos nativos y sus representaciones de cadena luego se transfieren a las cuerdas y de la corriente como bytes. Así
myStreamWriter.Write(123);
escribirá "123" (tres caracteres '1', '2' y luego '3') a la corriente. Si está tratando con archivos de texto (por ejemplo, html), StreamReader y StreamWriter son las clases que usaría.
Considerando
myBinaryWriter.Write(123);
va a escribir cuatro bytes que representan el valor entero de 32 bits 123 (0x7B, 0x00, 0x00, 0x00). Si está tratando con archivos binarios o protocolos de red, BinaryReader y BinaryWriter son lo que podría usar. (Si está intercambiando datos con redes u otros sistemas, debe tener en cuenta endianness, pero esa es otra publicación.)
es posible que desee comprobar http://stackoverflow.com/questions/507747/can-you-explain-the-concept-of-streams – Preets
Tome una matriz de bytes y luego cree un contenedor para ello ('Stream') que expone algunos métodos útiles, como leer, escribir y cambiar de posición. Ahora puede crear clases basadas en su almacén de respaldo (FileStream, MemoryStream) que heredan de 'Stream' y se basan en esa funcionalidad basada en el almacén de respaldo particular. –