Saltar al pie de página
Iron Academy Logo
Aprender C#
Aprender C#

Otras categorías

Lectura y escritura de archivos en C#

Tim Corey
24m 34s

Las operaciones de entrada y salida (E/S) de archivos en C# son una parte esencial de muchas aplicaciones de software, ya que permiten a los desarrolladores leer y escribir en archivos de forma eficiente. Ya se trate de almacenar datos, registrar eventos de aplicaciones o procesar grandes cantidades de texto o datos binarios, C# ofrece herramientas sólidas para trabajar con archivos. En el vídeo de Tim Corey, "C# Data Access: Archivos de texto", ofrece un recorrido detallado de estas operaciones con archivos, centrándose en cómo utilizar archivos de texto tanto para el almacenamiento como para la recuperación de datos. El objetivo de este artículo es resumir los conceptos y técnicas clave que Tim trata en el vídeo, proporcionándote una visión práctica de las operaciones de E/S de archivos en C#.

Introducción

En C#, las operaciones de entrada y salida de archivos son esenciales para leer y escribir en archivos de texto. La clase File proporciona métodos estáticos para interactuar con archivos existentes o crear nuevos. StreamReader y StreamWriter se utilizan comúnmente para leer y escribir archivos. StreamReader lee los archivos línea por línea, permitiéndote acceder a cada línea de texto o a un arreglo de cadenas. También puedes usar el bucle while para leer archivos más grandes de manera eficiente. La clase StreamWriter se utiliza para escribir datos en un archivo, soportando la escritura de cadenas y arreglos. Se puede usar para añadir texto a un archivo existente o sobrescribir el archivo entero. Métodos como WriteLine y WriteText permiten una fácil manipulación de datos dentro de archivos de texto.

Estas operaciones se realizan típicamente dentro del método static void Main, donde defines la ruta del archivo. Por ejemplo, puedes especificar un nombre de archivo y usar StreamWriter para escribir una sola cadena o un arreglo completo de cadenas. La instrucción using asegura que el archivo se cierre correctamente después de las operaciones, previniendo fugas de recursos. StreamReader también se puede usar para leer archivos línea por línea, y se pueden manejar excepciones para gestionar posibles errores cuando el archivo no existe o no puede ser accedido. Estas capacidades de E/S de archivos hacen de C# una opción excelente para trabajar con archivos de forma eficiente y eficaz.

Tim introduce el tema destacando la sencillez de leer y escribir en archivos de texto en C#. Demuestra cómo unas pocas líneas de código pueden lograr estas tareas, convirtiendo los archivos de texto en una opción viable para el almacenamiento de datos.

Creación de una aplicación de consola de demostración

Tim comienza creando una nueva aplicación de consola llamada "TextFileDataAccessDemo" utilizando Visual Studio.

using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;

namespace TextFileDataAccessDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.ReadLine(); // Keeps the console window open to view the output
        }
    }
}
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;

namespace TextFileDataAccessDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.ReadLine(); // Keeps the console window open to view the output
        }
    }
}

Él explica el uso de Console.ReadLine para mantener la ventana de la consola abierta, permitiendo a los usuarios ver la salida.

Lectura de un archivo de texto

Tim demuestra cómo leer desde un archivo de texto usando el método File.ReadAllLines. Muestra cómo manejar rutas de archivos y utilizar literales de cadena para evitar caracteres de escape.

string filePath = @"C:\demos\test.txt";
List<string> lines = File.ReadAllLines(filePath).ToList();
string filePath = @"C:\demos\test.txt";
List<string> lines = File.ReadAllLines(filePath).ToList();

El método File.ReadAllLines lee todas las líneas del archivo especificado y las devuelve como un arreglo de cadenas. Tim convierte esta matriz en una lista para facilitar su manipulación.

Escribir en un archivo de texto

Tim explica cómo escribir datos en un archivo de texto usando el método File.WriteAllLines. Demuestra cómo añadir nuevas líneas a la lista y volver a escribir la lista actualizada en el archivo.

lines.Add("Sue,Storm,WWIStorm.com");
File.WriteAllLines(filePath, lines);
lines.Add("Sue,Storm,WWIStorm.com");
File.WriteAllLines(filePath, lines);

Este código añade una nueva entrada a la lista y vuelve a escribir toda la lista en el archivo.

Crear un modelo de datos y rellenarlo desde un archivo

Tim crea una clase Person para representar la estructura de datos para cada entrada en el archivo de texto.

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string URL { get; set; }
}
public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string URL { get; set; }
}

Luego lee el archivo y llena una lista de objetos Person.

List<Person> people = new List<Person>();
List<string> lines = File.ReadAllLines(filePath).ToList();

foreach (string line in lines)
{
    string[] entries = line.Split(',');
    Person newPerson = new Person
    {
        FirstName = entries[0],
        LastName = entries[1],
        URL = entries[2]
    };
    people.Add(newPerson);
}
List<Person> people = new List<Person>();
List<string> lines = File.ReadAllLines(filePath).ToList();

foreach (string line in lines)
{
    string[] entries = line.Split(',');
    Person newPerson = new Person
    {
        FirstName = entries[0],
        LastName = entries[1],
        URL = entries[2]
    };
    people.Add(newPerson);
}

Este código lee cada línea, la divide por comas y crea un objeto Person con los datos extraídos.

Interpolación de cadenas

Tim presenta la interpolación de cadenas, una función de C# 6.0 que simplifica el proceso de combinación de variables y cadenas. Este método utiliza el símbolo $ antes de la cadena y llaves {} para incrustar variables directamente dentro de la cadena.

foreach (var person in people)
{
    Console.WriteLine($"{person.FirstName} {person.LastName}: {person.URL}");
}
foreach (var person in people)
{
    Console.WriteLine($"{person.FirstName} {person.LastName}: {person.URL}");
}

Esta sintaxis es más concisa y eficiente en comparación con la concatenación tradicional usando el operador +.

C# Read Write File

Validación de datos

Tim hace hincapié en la importancia de validar los datos cuando se leen de un archivo de texto. Señala los riesgos de asumir la estructura de los datos y recomienda comprobar la longitud de las entradas divididas.

foreach (string line in lines)
{
    string[] entries = line.Split(',');
    if (entries.Length == 3)
    {
        Person newPerson = new Person
        {
            FirstName = entries[0],
            LastName = entries[1],
            URL = entries[2]
        };
        people.Add(newPerson);
    }
    else
    {
        // Handle error
        Console.WriteLine("Invalid data format.");
    }
}
foreach (string line in lines)
{
    string[] entries = line.Split(',');
    if (entries.Length == 3)
    {
        Person newPerson = new Person
        {
            FirstName = entries[0],
            LastName = entries[1],
            URL = entries[2]
        };
        people.Add(newPerson);
    }
    else
    {
        // Handle error
        Console.WriteLine("Invalid data format.");
    }
}

Esto garantiza que solo se procesen las líneas con el número correcto de entradas, evitando posibles errores de ejecución.

Añadir objetos a una lista

Tim demuestra cómo agregar nuevos objetos a la lista. Usa una instancia anónima de la clase Person para agregar una nueva persona a la lista.

people.Add(new Person { FirstName = "Greg", LastName = "Jones", URL = "WOWT.com" });
people.Add(new Person { FirstName = "Greg", LastName = "Jones", URL = "WOWT.com" });

Esto crea e inicializa un nuevo objeto Person en una sola línea, que luego se añade a la lista people.

Escribir datos en un archivo de texto

Tim explica cómo escribir la lista de objetos Person de nuevo en el archivo de texto. Convierte la lista de objetos Person a una lista de cadenas, donde cada cadena representa una línea en el archivo.

List<string> output = new List<string>();
foreach (var person in people)
{
    output.Add($"{person.FirstName},{person.LastName},{person.URL}");
}
File.WriteAllLines(filePath, output);
List<string> output = new List<string>();
foreach (var person in people)
{
    output.Add($"{person.FirstName},{person.LastName},{person.URL}");
}
File.WriteAllLines(filePath, output);

Este código itera sobre la lista people, crea una cadena CSV para cada objeto Person, y escribe la lista de cadenas en el archivo.

Conclusión

La guía detallada de Tim Corey sobre las operaciones de E/S de archivos en C# ofrece información práctica sobre la lectura y escritura en archivos de texto. Siguiendo sus ejemplos, los desarrolladores pueden gestionar eficazmente los datos mediante archivos de texto e implementar soluciones sólidas de almacenamiento de datos. Para una comprensión más profunda y una experiencia de aprendizaje práctica, te recomiendo que veas el vídeo de Tim Corey, donde profundiza en estos conceptos con ejemplos reales.

Hero Worlddot related to Lectura y escritura de archivos en C#
Hero Affiliate related to Lectura y escritura de archivos en C#

Gana más compartiendo lo que te gusta

¿Creas contenidos para desarrolladores que trabajan con .NET, C#, Java, Python o Node.js? ¡Convierte tu experiencia en un ingreso extra!

Equipo de soporte de Iron

Estamos disponibles online las 24 horas, 5 días a la semana.
Chat
Email
Llámame