Para ampliar un poco otras respuestas aquí, y ayudar a explicar gran parte del código de ejemplo que verá punteado, la mayoría de las veces no lee y escribe en una transmisión directamente. Las transmisiones son un medio de bajo nivel para transferir datos.
Notará que las funciones de lectura y escritura están todas orientadas a bytes, por ejemplo WriteByte (). No hay funciones para tratar con números enteros, cadenas, etc. Esto hace que la secuencia sea de propósito general, pero menos simple de trabajar si, por ejemplo, solo desea transferir texto.
Sin embargo, .NET proporciona clases que convierten entre tipos nativos y la interfaz de flujo de bajo nivel, y transfiere los datos hacia o desde el flujo por usted. Algunas clases notables son:
StreamWriter // Badly named. Should be TextWriter.
StreamReader // Badly named. Should be TextReader.
BinaryWriter
BinaryReader
Para usarlos, primero adquiere su flujo, luego crea una de las clases anteriores y la asocia con el flujo. P.ej
MemoryStream memoryStream = new MemoryStream();
StreamWriter myStreamWriter = new StreamWriter(memoryStream);
StreamReader y StreamWriter convierten entre tipos nativos y sus representaciones de cadenas y luego transfieren las cadenas hacia y desde la secuencia como bytes. Entonces
myStreamWriter.Write(123);
escribirá "123" (tres caracteres '1', '2' y luego '3') en la secuencia. Si está tratando con archivos de texto (por ejemplo, html), StreamReader y StreamWriter son las clases que usaría.
Mientras
myBinaryWriter.Write(123);
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 los que podría usar. (Si está intercambiando datos con redes u otros sistemas, debe tener en cuenta el endianismo , pero esa es otra publicación).