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.StreamReaderyStreamWriter: 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 comoFileNotFoundExceptionyIOException.
Ejercicios Prácticos
Ejercicio 1: Leer y Mostrar Contenido de un Archivo
Instrucciones:
- Crea un archivo de texto llamado
data.txty 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
