En este módulo, aprenderemos cómo manejar archivos en C#. La entrada/salida de archivos (File I/O) es una parte fundamental de muchas aplicaciones, ya que permite leer y escribir datos en archivos en el sistema de archivos. C# proporciona varias clases en el espacio de nombres System.IO
para trabajar con archivos y directorios.
Conceptos Clave
- Espacio de nombres
System.IO
: Contiene las clases necesarias para trabajar con archivos y directorios. - Clases principales:
File
: Proporciona métodos estáticos para la creación, copia, eliminación, movimiento y apertura de archivos.FileInfo
: Proporciona métodos de instancia para la creación, copia, eliminación, movimiento y apertura de archivos.Directory
: Proporciona métodos estáticos para la creación, movimiento y enumeración de directorios y subdirectorios.DirectoryInfo
: Proporciona métodos de instancia para la creación, movimiento y enumeración de directorios y subdirectorios.StreamReader
yStreamWriter
: Para leer y escribir caracteres en un archivo.FileStream
: Para leer y escribir bytes en un archivo.
Ejemplo Práctico
Leer un Archivo de Texto
Vamos a empezar con un ejemplo simple de cómo leer un archivo de texto usando StreamReader
.
using System; using System.IO; class Program { static void Main() { string path = "example.txt"; // Verificar si el archivo existe if (File.Exists(path)) { // Leer el archivo línea por línea using (StreamReader sr = new StreamReader(path)) { string line; while ((line = sr.ReadLine()) != null) { Console.WriteLine(line); } } } else { Console.WriteLine("El archivo no existe."); } } }
Explicación:
File.Exists(path)
: Verifica si el archivo existe.StreamReader sr = new StreamReader(path)
: Abre el archivo para lectura.sr.ReadLine()
: Lee una línea del archivo.
Escribir en un Archivo de Texto
Ahora, veamos cómo escribir en un archivo de texto usando StreamWriter
.
using System; using System.IO; class Program { static void Main() { string path = "example.txt"; // Escribir en el archivo using (StreamWriter sw = new StreamWriter(path)) { sw.WriteLine("Hola, Mundo!"); sw.WriteLine("Esta es una segunda línea."); } Console.WriteLine("Texto escrito en el archivo."); } }
Explicación:
StreamWriter sw = new StreamWriter(path)
: Abre el archivo para escritura. Si el archivo no existe, lo crea.sw.WriteLine("texto")
: Escribe una línea de texto en el archivo.
Manejo de Excepciones
Es importante manejar excepciones al trabajar con archivos para evitar que la aplicación falle inesperadamente.
using System; using System.IO; class Program { static void Main() { string path = "example.txt"; try { // Leer el archivo using (StreamReader sr = new StreamReader(path)) { string line; while ((line = sr.ReadLine()) != null) { Console.WriteLine(line); } } } catch (FileNotFoundException e) { Console.WriteLine("El archivo no fue encontrado:"); Console.WriteLine(e.Message); } catch (IOException e) { Console.WriteLine("Ocurrió un error de E/S:"); Console.WriteLine(e.Message); } } }
Explicación:
try-catch
: Bloques para manejar excepciones específicas comoFileNotFoundException
yIOException
.
Ejercicios Prácticos
Ejercicio 1: Leer y Mostrar Contenido de un Archivo
Instrucciones:
- Crea un archivo de texto llamado
data.txt
y escribe algunas líneas de texto en él. - Escribe un programa en C# que lea y muestre el contenido del archivo en la consola.
Solución:
using System; using System.IO; class Program { static void Main() { string path = "data.txt"; if (File.Exists(path)) { using (StreamReader sr = new StreamReader(path)) { string line; while ((line = sr.ReadLine()) != null) { Console.WriteLine(line); } } } else { Console.WriteLine("El archivo no existe."); } } }
Ejercicio 2: Escribir Datos en un Archivo
Instrucciones:
- Escribe un programa en C# que solicite al usuario ingresar varias líneas de texto.
- Guarda estas líneas en un archivo llamado
output.txt
.
Solución:
using System; using System.IO; class Program { static void Main() { string path = "output.txt"; using (StreamWriter sw = new StreamWriter(path)) { Console.WriteLine("Ingrese texto (escriba 'salir' para terminar):"); string input; while ((input = Console.ReadLine()) != "salir") { sw.WriteLine(input); } } Console.WriteLine("Texto guardado en el archivo."); } }
Resumen
En esta sección, hemos aprendido cómo manejar archivos en C# utilizando las clases del espacio de nombres System.IO
. Hemos cubierto cómo leer y escribir archivos de texto, así como cómo manejar excepciones comunes que pueden ocurrir durante las operaciones de E/S de archivos. Los ejercicios prácticos proporcionados te ayudarán a reforzar estos conceptos y a desarrollar tus habilidades en la manipulación de archivos en C#.
Curso de Programación en C#
Módulo 1: Introducción a C#
- Introducción a C#
- Configuración del Entorno de Desarrollo
- Programa Hola Mundo
- Sintaxis y Estructura Básica
- Variables y Tipos de Datos
Módulo 2: Estructuras de Control
Módulo 3: Programación Orientada a Objetos
- Clases y Objetos
- Métodos
- Constructores y Destructores
- Herencia
- Polimorfismo
- Encapsulamiento
- Abstracción
Módulo 4: Conceptos Avanzados de C#
- Interfaces
- Delegados y Eventos
- Genéricos
- Colecciones
- LINQ (Consulta Integrada en el Lenguaje)
- Programación Asíncrona
Módulo 5: Trabajando con Datos
Módulo 6: Temas Avanzados
- Reflexión
- Atributos
- Programación Dinámica
- Gestión de Memoria y Recolección de Basura
- Multihilo y Programación Paralela
Módulo 7: Construcción de Aplicaciones
Módulo 8: Mejores Prácticas y Patrones de Diseño
- Estándares de Codificación y Mejores Prácticas
- Patrones de Diseño
- Pruebas Unitarias
- Revisión y Refactorización de Código