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

  1. Espacio de nombres System.IO: Contiene las clases necesarias para trabajar con archivos y directorios.
  2. 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 y StreamWriter: 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 como FileNotFoundException y IOException.

Ejercicios Prácticos

Ejercicio 1: Leer y Mostrar Contenido de un Archivo

Instrucciones:

  1. Crea un archivo de texto llamado data.txt y escribe algunas líneas de texto en él.
  2. 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:

  1. Escribe un programa en C# que solicite al usuario ingresar varias líneas de texto.
  2. 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#.

© Copyright 2024. Todos los derechos reservados