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.