Imagina Formación

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

Escrito por Equipo de Imagina• Actualizado el 10/10/2024• Duración: 20 min

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.
using 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.
string rutaArchivo = "ruta/del/archivo.txt";
  1. Crear el archivo: Usaremos la función
    File.Create
    para crear el archivo en la ubicación especificada.
try
{
    FileStream archivo = File.Create(rutaArchivo);
    archivo.Close();
    Console.WriteLine("**Archivo creado exitosamente.**");
}
catch (Exception ex)
{
    Console.WriteLine("Error al crear el archivo: " + ex.Message);
}

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.
using System.IO;
  1. Especificar la ruta del directorio: Decide dónde deseas crear el directorio y proporciona la ruta.
string rutaDirectorio = "ruta/del/directorio";
  1. Crear el directorio: Utiliza la función
    Directory.CreateDirectory
    para crear el directorio en la ubicación especificada.
try
{
    Directory.CreateDirectory(rutaDirectorio);
    Console.WriteLine("**Directorio creado exitosamente.**");
}
catch (Exception ex)
{
    Console.WriteLine("Error al crear el directorio: " + ex.Message);
}

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.
using System.IO;
  1. Especificar la ruta del archivo: Indica la ruta del archivo desde el cual deseas leer los datos.
string 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.
try
{
    string[] lineas = File.ReadAllLines(rutaArchivo);
    foreach (string linea in lineas)
    {
        Console.WriteLine(linea);
    }
}
catch (Exception ex)
{
    Console.WriteLine("Error al leer el archivo: " + ex.Message);
}

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.
using 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.
string rutaArchivo = "ruta/del/archivo.txt";
string[] 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.
try
{
    File.WriteAllLines(rutaArchivo, datosAEscribir);
    Console.WriteLine("**Datos escritos en el archivo correctamente.**");
}
catch (Exception ex)
{
    Console.WriteLine("Error al escribir en el archivo: " + ex.Message);
}
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.

Usaremos los datos personales recopilados a través de este formulario en línea para informarte de las últimas novedades sobre nuestros cursos. Para obtener más información, consulta nuestra política de privacidad.

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:
try
{
    string rutaArchivoOrigen = "ruta/del/archivo.txt";
    string rutaArchivoDestino = "nueva/ruta/del/archivo.txt";
    
    File.Move(rutaArchivoOrigen, rutaArchivoDestino);
    Console.WriteLine("**Archivo movido exitosamente.**");
}
catch (Exception ex)
{
    Console.WriteLine("Error al mover el archivo: " + ex.Message);
}
  1. Mover un directorio:
try
{
    string rutaDirectorioOrigen = "ruta/del/directorio";
    string rutaDirectorioDestino = "nueva/ruta/del/directorio";
    
    Directory.Move(rutaDirectorioOrigen, rutaDirectorioDestino);
    Console.WriteLine("**Directorio movido exitosamente.**");
}
catch (Exception ex)
{
    Console.WriteLine("Error al mover el directorio: " + ex.Message);
}

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:
try
{
    string rutaArchivoActual = "ruta/del/archivo.txt";
    string nuevoNombreArchivo = "nuevo_nombre.txt";
    
    string rutaArchivoNuevo = Path.Combine(Path.GetDirectoryName(rutaArchivoActual), nuevoNombreArchivo);
    File.Move(rutaArchivoActual, rutaArchivoNuevo);
    Console.WriteLine("**Archivo renombrado exitosamente.**");
}
catch (Exception ex)
{
    Console.WriteLine("Error al renombrar el archivo: " + ex.Message);
}
  1. Renombrar un directorio:
try
{
    string rutaDirectorioActual = "ruta/del/directorio";
    string nuevoNombreDirectorio = "nuevo_nombre";
    
    string rutaDirectorioNuevo = Path.Combine(Path.GetDirectoryName(rutaDirectorioActual), nuevoNombreDirectorio);
    Directory.Move(rutaDirectorioActual, rutaDirectorioNuevo);
    Console.WriteLine("**Directorio renombrado exitosamente.**");
}
catch (Exception ex)
{
    Console.WriteLine("Error al renombrar el directorio: " + ex.Message);
}

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:
try
{
    string rutaArchivoAEliminar = "ruta/del/archivo.txt";
    
    File.Delete(rutaArchivoAEliminar);
    Console.WriteLine("**Archivo eliminado exitosamente.**");
}
catch (Exception ex)
{
    Console.WriteLine("Error al eliminar el archivo: " + ex.Message);
}
  1. Eliminar un directorio:
try
{
    string rutaDirectorioAEliminar = "ruta/del/directorio";
    
    Directory.Delete(rutaDirectorioAEliminar, true);
    Console.WriteLine("**Directorio eliminado exitosamente.**");
}
catch (Exception ex)
{
    Console.WriteLine("Error al eliminar el directorio: " + ex.Message);
}
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:
try
{
    string rutaDirectorio = "ruta/del/directorio";
    string extensionBuscada = ".txt"; // Cambiar por la extensión deseada
    
    string[] archivosEncontrados = Directory.GetFiles(rutaDirectorio, "*" + extensionBuscada);
    foreach (string archivo in archivosEncontrados)
    {
        Console.WriteLine(archivo);
    }
}
catch (Exception ex)
{
    Console.WriteLine("Error al buscar archivos: " + ex.Message);
}
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:
try
{
    string rutaDirectorio = "ruta/del/directorio";
    string patronBusqueda = "archivo_*_[0-9].txt"; // Cambiar por el patrón deseado
    
    string[] archivosEncontrados = Directory.GetFiles(rutaDirectorio, patronBusqueda);
    foreach (string archivo in archivosEncontrados)
    {
        Console.WriteLine(archivo);
    }
}
catch (Exception ex)
{
    Console.WriteLine("Error al buscar archivos: " + ex.Message);
}
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 de C# para empresas. ¡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.
También, te invitamos a explorar los mejores cursos para empresas y descubrir la formación que más se adapte a tus necesidades.

Descubre la formación a tu medida

Rellena el formulario para obtener más información sobre los cursos.

Usaremos los datos personales recopilados a través de este formulario en línea para informarte de las últimas novedades sobre nuestros cursos. Para obtener más información, consulta nuestra política de privacidad.