Dominando File Streams en C#: StreamReader y StreamWriter – Guía Paso a Paso
En E/S de archivos en C#, los streams sirven como intermediario entre su aplicación y el sistema de archivos subyacente. Permiten leer o escribir en archivos de manera eficiente en memoria, especialmente al tratar con grandes conjuntos de datos.
En lugar de cargar un archivo completo de 100 MB en memoria—lo que puede hacer que su app se congele—los streams dividen los datos en trozos manejables. Este enfoque mantiene el rendimiento fluido y previene caídas.
A continuación encontrará ejemplos concisos que demuestran cómo leer y escribir archivos usando StreamReader y StreamWriter. Siga las instrucciones paso a paso para integrar estos patrones en sus propios proyectos.
StreamReader – Leyendo Archivos
La clase StreamReader lee texto de un archivo línea por línea, pasando los datos a través de un buffer antes de que su aplicación los procese.
Asuma que tiene un archivo llamado Example.txt en la unidad D conteniendo dos líneas:
- Guru99 – .Net
- Guru99 – C#
Cree una aplicación de consola y añada el siguiente código a Program.cs:

using System; using System.IO; namespace DemoApplication { class Tutorial { static void Main(string[] args) { string path = @"D:\Example.txt"; using (StreamReader sr = File.OpenText(path)) { string line; while ((line = sr.ReadLine()) != null) { Console.WriteLine(line); } } Console.ReadKey(); } } } Explicación:
- Instanciar
StreamReaderconFile.OpenText, abriendo el archivo en modo solo lectura. - Leer cada línea con
ReadLine(), que transfiere datos del archivo al buffer y luego a la variableline. - Mostrar cada línea en la consola.
Ejecutar este programa en Visual Studio muestra:

Las dos líneas de Example.txt aparecen correctamente, demostrando que el reader funciona como se espera.
StreamWriter – Escribiendo en Archivos
Por el contrario, StreamWriter escribe texto desde su aplicación a un archivo vía buffer. A continuación un ejemplo simple que añade una línea al mismo archivo Example.txt.

using System; using System.IO; namespace DemoApplication { class Tutorial { static void Main(string[] args) { string path = @"D:\Example.txt"; using (StreamWriter sw = File.AppendText(path)) { sw.WriteLine("Guru99 – ASP.Net"); } Console.WriteLine(File.ReadAllText(path)); Console.ReadKey(); } } } Explicación:
- Instanciar
StreamWriterconFile.AppendText, abriendo el archivo en modo adjuntar. - Escribir una nueva línea usando
WriteLine(), que empuja el texto al buffer y luego al archivo. - Cerrar el writer automáticamente vía el bloque
using. - Leer todo el contenido del archivo con
File.ReadAllTextpara confirmar la operación de escritura.
Ejecutar este programa muestra:

La consola muestra las tres líneas, confirmando que la nueva entrada se adjuntó exitosamente.
Conclusiones Clave
- Los streams desacoplan E/S de archivos de la lógica de aplicación, permitiendo manejo eficiente de archivos grandes.
- Use
StreamReaderpara leer texto línea por línea. - Use
StreamWriterpara escribir o adjuntar texto, asegurándose de cerrar el stream para liberar manejadores de archivo.
Lenguaje C
- Bucles for en C++ explicados: Sintaxis, flujo de trabajo y ejemplos prácticos
- Dominando switch-case en C++: Sintaxis, uso y ejemplos prácticos
- Asignación dinámica de arrays en C++: Guía práctica con ejemplos de código
- Dominando flujos en C++: cout, cin, cerr, clog – Guía práctica
- Dominando std::stack en C++: Guía completa con ejemplos prácticos
- Structs en C++ explicados con un ejemplo práctico
- Clases y objetos en C++: Guía práctica con ejemplos de código
- Dominar std::list en C++: Sintaxis, Funciones y Ejemplos Prácticos
- Clases Abstractas en C#: Tutorial Práctico con Ejemplos de Código
- Dominando Colecciones en C#: Tutorial Práctico con Ejemplos del Mundo Real
- Lectura de archivos en Java con BufferedReader – Guía práctica con ejemplos