logoImagina
iconCurso
Te recomendamos nuestro curso de C# 12
Descubre el curso de C# 12
Ir al curso
Descubre la formación a tu medida
Rellena el formulario para obtener más información sobre los cursos.
Tamaño de la empresa *
Términos y condiciones *

Todo sobre la Manipulación de Archivos y Directorios en C#

iconImage
Publicado 2024-03-07
Actualizado el 2024-04-02

Introducción

En este tutorial, exploraremos la manipulación de archivos y directorios en C#. Estas operaciones son fundamentales para el desarrollo de aplicaciones que requieren gestionar datos y recursos en el sistema de archivos. Aprenderemos cómo crear, leer, escribir y gestionar archivos y directorios utilizando las herramientas proporcionadas por C#.

Conceptos básicos de archivos y directorios

¿Qué son los archivos y directorios?

Antes de sumergirnos en la manipulación de archivos y directorios en C#, es importante comprender qué son y cómo están organizados. Un archivo es una colección de datos que se almacena en un dispositivo de almacenamiento, como un disco duro o una unidad flash. Los archivos pueden contener información en diferentes formatos, como texto, imágenes, audio o datos binarios.

Un directorio, también conocido como carpeta, es una estructura utilizada para organizar y agrupar archivos de forma jerárquica. Los directorios pueden contener otros subdirectorios y archivos. Esta organización facilita el acceso y la gestión de los datos en el sistema.

Rutas de archivo y directorio

En C#, para acceder a un archivo o directorio, necesitamos especificar su ruta, que es la dirección de ubicación dentro del sistema de archivos. Hay dos tipos de rutas comunes:

  1. Ruta absoluta: Especifica la ubicación completa del archivo o directorio desde la raíz del sistema de archivos. Por ejemplo: C:\Users\Usuario\Documentos\archivo.txt (en Windows) o /home/usuario/documentos/archivo.txt (en Linux).
  2. Ruta relativa: Especifica la ubicación del archivo o directorio en relación con el directorio actual del programa. Una ruta relativa puede ser simplemente el nombre del archivo si está en el mismo directorio o incluir .. para indicar un directorio padre. Por ejemplo: datos/archivo.txt.

Es importante tener en cuenta que las rutas en Windows utilizan el carácter \ como separador de directorios, mientras que en sistemas Unix (como Linux y macOS), se utiliza el carácter /.

Si nuestro programa se ejecuta desde la ubicación proyecto/, para acceder al archivo archivo.txt, usaríamos la ruta relativa datos/archivo.txt. Si estamos en una ubicación diferente, debemos especificar la ruta absoluta o ajustar la ruta relativa según la ubicación del programa.

Creación de archivos y directorios en C#

Crear un archivo

Para crear un archivo en C#, utilizaremos la clase File del espacio de nombres System.IO. La función principal que utilizaremos es File.Create, que crea un nuevo archivo vacío o sobrescribe un archivo existente si ya lo está. Veamos el proceso paso a paso:

  1. Incluir el espacio de nombres System.IO: Antes de comenzar, asegúrate de incluir el espacio de nombres System.IO en tu programa para acceder a las clases relacionadas con la manipulación de archivos.
1using System.IO;
  1. Especificar la ruta del archivo: Antes de crear un archivo, decide dónde deseas ubicarlo en el sistema de archivos. Puedes usar una ruta absoluta o relativa según tus necesidades.
1string rutaArchivo = "ruta/del/archivo.txt";
  1. Crear el archivo: Usaremos la función File.Create para crear el archivo en la ubicación especificada.
1try 2{ 3 FileStream archivo = File.Create(rutaArchivo); 4 archivo.Close(); 5 Console.WriteLine("**Archivo creado exitosamente.**"); 6} 7catch (Exception ex) 8{ 9 Console.WriteLine("Error al crear el archivo: " + ex.Message); 10}

Crear un directorio

Para crear un directorio en C#, utilizaremos la clase Directory del espacio de nombres System.IO. La función que nos ayudará en esta tarea es Directory.CreateDirectory. Sigue estos pasos para crear un directorio:

  1. Incluir el espacio de nombres System.IO: Si no lo has hecho anteriormente, asegúrate de incluir el espacio de nombres System.IO en tu programa.
1using System.IO;
  1. Especificar la ruta del directorio: Decide dónde deseas crear el directorio y proporciona la ruta.
1string rutaDirectorio = "ruta/del/directorio";
  1. Crear el directorio: Utiliza la función Directory.CreateDirectory para crear el directorio en la ubicación especificada.
1try 2{ 3 Directory.CreateDirectory(rutaDirectorio); 4 Console.WriteLine("**Directorio creado exitosamente.**"); 5} 6catch (Exception ex) 7{ 8 Console.WriteLine("Error al crear el directorio: " + ex.Message); 9}

Lectura y escritura de archivos en C#

Leer datos desde un archivo

Para leer datos desde un archivo en C#, utilizaremos la clase File del espacio de nombres System.IO. La función principal que utilizaremos es File.ReadAllLines, que nos permite leer todas las líneas de un archivo de texto y almacenarlas en un arreglo. Veamos el proceso:

  1. Incluir el espacio de nombres System.IO: Asegúrate de incluir el espacio de nombres System.IO en tu programa para acceder a las clases relacionadas con la manipulación de archivos.
1using System.IO;
  1. Especificar la ruta del archivo: Indica la ruta del archivo desde el cual deseas leer los datos.
1string rutaArchivo = "ruta/del/archivo.txt";
  1. Leer los datos: Utiliza la función File.ReadAllLines para leer todas las líneas del archivo y almacenarlas en un arreglo de cadenas.
1try 2{ 3 string[] lineas = File.ReadAllLines(rutaArchivo); 4 foreach (string linea in lineas) 5 { 6 Console.WriteLine(linea); 7 } 8} 9catch (Exception ex) 10{ 11 Console.WriteLine("Error al leer el archivo: " + ex.Message); 12}

Escribir datos en un archivo

Para escribir datos en un archivo en C#, nuevamente utilizaremos la clase File del espacio de nombres System.IO. La función principal que utilizaremos es File.WriteAllLines, que nos permite escribir un arreglo de cadenas en un archivo de texto. Sigue estos pasos:

  1. Incluir el espacio de nombres System.IO: Si no lo has hecho anteriormente, asegúrate de incluir el espacio de nombres System.IO en tu programa.
1using System.IO;
  1. Especificar la ruta del archivo y los datos a escribir: Indica la ruta del archivo en el cual deseas escribir los datos y prepara los datos que deseas escribir en el archivo.
1string rutaArchivo = "ruta/del/archivo.txt"; 2string[] datosAEscribir = { "Línea 1", "Línea 2", "Línea 3" };
  1. Escribir los datos en el archivo: Utiliza la función File.WriteAllLines para escribir los datos en el archivo.
1try 2{ 3 File.WriteAllLines(rutaArchivo, datosAEscribir); 4 Console.WriteLine("**Datos escritos en el archivo correctamente.**"); 5} 6catch (Exception ex) 7{ 8 Console.WriteLine("Error al escribir en el archivo: " + ex.Message); 9}

Recuerda que al utilizar File.WriteAllLines, se sobrescribirá el contenido del archivo si ya existe. Si deseas agregar nuevos datos al final del archivo sin eliminar el contenido anterior, puedes utilizar la función File.AppendAllLines.

Descubre la formación a tu medida
Rellena el formulario para obtener más información sobre los cursos.
Tamaño de la empresa *
Términos y condiciones *

Manipulación de archivos y directorios en C#

Mover archivos y directorios

La manipulación de archivos y directorios en C# también nos permite mover archivos y directorios dentro del sistema de archivos. Para realizar esta operación, utilizaremos las clases File y Directory del espacio de nombres System.IO. A continuación, te mostraremos cómo mover un archivo y un directorio:

  1. Mover un archivo:
1try 2{ 3 string rutaArchivoOrigen = "ruta/del/archivo.txt"; 4 string rutaArchivoDestino = "nueva/ruta/del/archivo.txt"; 5 6 File.Move(rutaArchivoOrigen, rutaArchivoDestino); 7 Console.WriteLine("**Archivo movido exitosamente.**"); 8} 9catch (Exception ex) 10{ 11 Console.WriteLine("Error al mover el archivo: " + ex.Message); 12}
  1. Mover un directorio:
1try 2{ 3 string rutaDirectorioOrigen = "ruta/del/directorio"; 4 string rutaDirectorioDestino = "nueva/ruta/del/directorio"; 5 6 Directory.Move(rutaDirectorioOrigen, rutaDirectorioDestino); 7 Console.WriteLine("**Directorio movido exitosamente.**"); 8} 9catch (Exception ex) 10{ 11 Console.WriteLine("Error al mover el directorio: " + ex.Message); 12}

Renombrar archivos y directorios

Para renombrar archivos y directorios en C#, podemos utilizar la función File.Move y Directory.Move, similar a cómo lo hicimos al moverlos. Sin embargo, esta vez solo necesitamos proporcionar una nueva ruta con el nombre deseado en lugar de moverlos a una ubicación diferente. A continuación, te mostramos cómo renombrar un archivo y un directorio:

  1. Renombrar un archivo:
1try 2{ 3 string rutaArchivoActual = "ruta/del/archivo.txt"; 4 string nuevoNombreArchivo = "nuevo_nombre.txt"; 5 6 string rutaArchivoNuevo = Path.Combine(Path.GetDirectoryName(rutaArchivoActual), nuevoNombreArchivo); 7 File.Move(rutaArchivoActual, rutaArchivoNuevo); 8 Console.WriteLine("**Archivo renombrado exitosamente.**"); 9} 10catch (Exception ex) 11{ 12 Console.WriteLine("Error al renombrar el archivo: " + ex.Message); 13}
  1. Renombrar un directorio:
1try 2{ 3 string rutaDirectorioActual = "ruta/del/directorio"; 4 string nuevoNombreDirectorio = "nuevo_nombre"; 5 6 string rutaDirectorioNuevo = Path.Combine(Path.GetDirectoryName(rutaDirectorioActual), nuevoNombreDirectorio); 7 Directory.Move(rutaDirectorioActual, rutaDirectorioNuevo); 8 Console.WriteLine("**Directorio renombrado exitosamente.**"); 9} 10catch (Exception ex) 11{ 12 Console.WriteLine("Error al renombrar el directorio: " + ex.Message); 13}

Eliminar archivos y directorios

La eliminación de archivos y directorios también es una parte esencial de la manipulación de archivos en C#. Utilizaremos las funciones File.Delete y Directory.Delete para llevar a cabo esta tarea. Sin embargo, debemos tener cuidado al eliminar elementos, ya que esta acción no se puede deshacer y podría causar la pérdida permanente de datos. A continuación, te mostramos cómo eliminar un archivo y un directorio:

  1. Eliminar un archivo:
1try 2{ 3 string rutaArchivoAEliminar = "ruta/del/archivo.txt"; 4 5 File.Delete(rutaArchivoAEliminar); 6 Console.WriteLine("**Archivo eliminado exitosamente.**"); 7} 8catch (Exception ex) 9{ 10 Console.WriteLine("Error al eliminar el archivo: " + ex.Message); 11}
  1. Eliminar un directorio:
1try 2{ 3 string rutaDirectorioAEliminar = "ruta/del/directorio"; 4 5 Directory.Delete(rutaDirectorioAEliminar, true); 6 Console.WriteLine("**Directorio eliminado exitosamente.**"); 7} 8catch (Exception ex) 9{ 10 Console.WriteLine("Error al eliminar el directorio: " + ex.Message); 11}

Es importante destacar que para eliminar un directorio, debemos especificar el segundo argumento true en la función Directory.Delete, lo que indica que queremos eliminar todos los archivos y subdirectorios que contiene. Si el directorio no está vacío y no especificamos true, se producirá un error y el directorio no se eliminará.

Búsqueda y filtrado de archivos en C#

Búsqueda de archivos por extensión

La búsqueda de archivos por extensión nos permite localizar todos los archivos que tienen una extensión específica en un directorio dado. Para realizar esta operación, utilizaremos la clase Directory del espacio de nombres System.IO. A continuación, te mostraremos cómo buscar archivos por extensión:

1try 2{ 3 string rutaDirectorio = "ruta/del/directorio"; 4 string extensionBuscada = ".txt"; // Cambiar por la extensión deseada 5 6 string[] archivosEncontrados = Directory.GetFiles(rutaDirectorio, "*" + extensionBuscada); 7 foreach (string archivo in archivosEncontrados) 8 { 9 Console.WriteLine(archivo); 10 } 11} 12catch (Exception ex) 13{ 14 Console.WriteLine("Error al buscar archivos: " + ex.Message); 15}

En este ejemplo, especificamos la ruta del directorio donde deseamos buscar los archivos y la extensión buscada. La función Directory.GetFiles toma estos argumentos y devuelve un arreglo con las rutas de los archivos encontrados que tienen la extensión deseada.

Filtrado avanzado de archivos

Además de la búsqueda por extensión, podemos realizar un filtrado avanzado de archivos utilizando Directory.GetFiles con patrones de búsqueda más específicos. Podemos usar caracteres comodín, como * y ?, para representar partes de nombres de archivo desconocidas o variables. A continuación, te mostramos cómo realizar un filtrado avanzado:

1try 2{ 3 string rutaDirectorio = "ruta/del/directorio"; 4 string patronBusqueda = "archivo_*_[0-9].txt"; // Cambiar por el patrón deseado 5 6 string[] archivosEncontrados = Directory.GetFiles(rutaDirectorio, patronBusqueda); 7 foreach (string archivo in archivosEncontrados) 8 { 9 Console.WriteLine(archivo); 10 } 11} 12catch (Exception ex) 13{ 14 Console.WriteLine("Error al buscar archivos: " + ex.Message); 15}

En este ejemplo, el patrón de búsqueda utilizado es "archivo_*_[0-9].txt", lo que significa que estamos buscando archivos que comiencen con "archivo_", seguido de cualquier texto variable representado por *, luego un guion bajo _, y finalmente un dígito del 0 al 9 representado por [0-9]. La extensión del archivo debe ser .txt.

Es importante tener en cuenta que, en este caso, utilizamos el patrón de búsqueda con caracteres comodín. Si deseas realizar un filtrado más específico, puedes utilizar expresiones regulares u otras técnicas para lograr el resultado deseado.

Recuerda que al utilizar funciones de búsqueda y filtrado, es fundamental tener cuidado con los patrones utilizados para evitar la eliminación accidental de archivos importantes. Siempre realiza pruebas en un directorio de prueba antes de aplicar cualquier operación a gran escala.

Conclusiones

En resumen, este tutorial ha cubierto los conceptos esenciales de manipulación de archivos y directorios en C#. Aprendimos a crear, leer, escribir, gestionar y buscar archivos y directorios utilizando las clases proporcionadas por el espacio de nombres System.IO.

Si deseas llevar tus habilidades de programación en C# al siguiente nivel, te recomendamos encarecidamente nuestro curso completo de C#. ¡Potencia tu carrera y destaca como un desarrollador de C# altamente capacitado! Únete a nuestro curso y abre las puertas a un mundo de oportunidades en el desarrollo de software. ¡Te esperamos para llevar tus habilidades al siguiente horizonte!

Descubre la formación a tu medida
Rellena el formulario para obtener más información sobre los cursos.
Tamaño de la empresa *
Términos y condiciones *
iconClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClienticonClient