Trabajo con el sistema de archivos en C#: guía completa para desarrolladores

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course
```html

Trabajo con el sistema de archivos en C#: desde lo básico hasta técnicas avanzadas

Trabajar con el sistema de archivos es una de las tareas clave al desarrollar aplicaciones en C#. Ya sea guardar datos de usuario, leer archivos de configuración o procesar registros, la capacidad de interactuar eficazmente con archivos y directorios es necesaria para todo desarrollador .NET. En este artículo analizaremos las clases principales del espacio de nombres System.IO, aprenderemos a crear, leer y modificar archivos, y también veremos las mejores prácticas para el manejo de errores.



1. Clases principales para trabajar con el sistema de archivos

En .NET, se proporcionan varias clases clave para trabajar con archivos y directorios. Veámoslas en detalle.



Clase File y FileInfo

File es una clase estática que proporciona métodos para crear, copiar, eliminar y mover archivos. FileInfo es una clase de instancia que permite trabajar con un archivo específico.

using System.IO;

// Uso de la clase estática Filestring path = @"C:\\Temp\\test.txt";if (File.Exists(path)){ string content = File.ReadAllText(path); Console.WriteLine(content);}

// Uso de FileInfoFileInfo fileInfo = new FileInfo(path);if (fileInfo.Exists){ Console.WriteLine($"Tamaño del archivo: {fileInfo.Length} bytes"); Console.WriteLine($"Fecha de creación: {fileInfo.CreationTime}");}


Clase Directory y DirectoryInfo

De manera similar, Directory es una clase estática para operaciones con directorios, y DirectoryInfo para trabajar con una carpeta específica.

string dirPath = @"C:\\Temp\\MyFolder";

// Creación de directorioDirectory.CreateDirectory(dirPath);

// Obtención de información del directorioDirectoryInfo dirInfo = new DirectoryInfo(dirPath);if (dirInfo.Exists){ Console.WriteLine($"Subdirectorios: {dirInfo.GetDirectories().Length}"); Console.WriteLine($"Archivos: {dirInfo.GetFiles().Length}");}


Clase Path

Path es una clase utilitaria para trabajar con rutas. Ayuda a combinar rutas, extraer extensiones y nombres de archivos.

string fullPath = @"C:\\Temp\\myfile.txt";string fileName = Path.GetFileName(fullPath);       // myfile.txtstring extension = Path.GetExtension(fullPath);     // .txtstring directory = Path.GetDirectoryName(fullPath); // C:\\Tempstring combined = Path.Combine(@"C:\\Temp", "newfile.txt"); // C:\\Tempewfile.txt


2. Lectura y escritura de archivos

En C# existen varias formas de leer y escribir archivos. La elección depende del tamaño de los datos y el rendimiento requerido.



Lectura de archivos de texto

Para archivos pequeños, es conveniente usar métodos de una sola línea:

// Lectura de todo el archivo en una líneastring text = File.ReadAllText("data.txt");

// Lectura de todas las líneas en un arraystring[] lines = File.ReadAllLines("data.txt");

// Lectura con StreamReader (para archivos grandes)using (StreamReader reader = new StreamReader("largefile.txt")){ string line; while ((line = reader.ReadLine()) != null) { Console.WriteLine(line); }}


Escritura en archivos

// Escritura de una cadenaFile.WriteAllText("output.txt", "Hello, World!");

// Escritura de un array de cadenasstring[] lines = { "Primera línea", "Segunda línea" };File.WriteAllLines("output.txt", lines);

// Añadir al final del archivoFile.AppendAllText("log.txt", $"{DateTime.Now}: Nueva entrada");

// Escritura con StreamWriterusing (StreamWriter writer = new StreamWriter("data.txt", append: true)){ writer.WriteLine("Nueva línea");}


Trabajo con archivos binarios

Para datos binarios, use FileStream y BinaryReader/BinaryWriter:

// Escritura de datos binariosusing (BinaryWriter writer = new BinaryWriter(File.Open("data.bin"
```

Blogs

Book Recommendations