Listar Archivos y Carpetas de una Ruta/Carpeta en C# .NET


Listar o buscar archivos en un directorio es una tarea muy util en ciertos proyectos o pruebas, en este articulo les muestro como hacer un listado de archivos y carpetas de una ruta o carpeta en Windows usando C# .NET.

Cuando les digo que archivos y subcarpeta es por que C# .NET tiene dos funciones diferentes, la función Directory.GetFiles que solo obtiene los archivos y la función Directory.GetDirectories que solo obtiene las Carpetas o Sub Carpetas.

Empecemos

Como siempre lo primera que debemos hacer es abrir nuestro Visual Studio, crear un Proyecto de Windows Forms en C# .NET y empezar.

Para usar funciones relacionadas con archivos y carpetas es necesario activar las librerías de entrada y salida.

using System.IO;

Opcionalmente le he agregado un DataGridView a mi ventana y le he agregado las siguiente configuración.

dataGridView1.Columns.Clear();
dataGridView1.Rows.Clear();
dataGridView1.Columns.Add("Archivo", "Archivo");
dataGridView1.Columns[0].Width = 500;

Ahora viene la función para obtener los nombres de los archivos en un array de texto o string.

string[] files = Directory.GetFiles(@"C:\"); // Obtener archivos 

La función Directory.GetFiles tiene varios parámetros opcionales, pero el principal seria la ruta o ubicación de la cual vamos a leer los archivos.

Para recorrer el array usaremos un foreach de toda la vida.

foreach (string f in files)
{
    Console.WriteLine(f); // Mostramos los archivos en la consola
    dataGridView1.Rows.Add(f); // Agregamos una fila con el nombre de los archivos en el DataGridView
}

Y ahora para obtener los directorios o carpetas.

string[] folders = Directory.GetDirectories(@"C:\");

De la misma manera la funcion Directory.GetDirectories admite varios parámetros pero el principal sera la ruta o ubicación inicial.

Para recorrer el listado de directorios usaremos el foreach. Le agregamos un simbolo “> ” al inicio del nombre de las carpetas para diferenciarlas de los archivos.

foreach (string f in folders)
{
    Console.WriteLine("> "+f); // Mostramos las carpetas en la consola
    dataGridView1.Rows.Add("> "+f); // Mostramos las carpetas en una fila en el datagridview
}

Resultado

En mi caso que use el datagridview para visualizar los archivos se veria asi:

Y Listo.

Leave a comment