Aprende a listar archivos y carpetas en C# .NET con Directory.GetFiles y GetDirectories. Incluye visualización en un DataGridView.
Listar archivos y carpetas de un directorio es una tarea muy común en aplicaciones de escritorio con C# — desde exploradores de archivos hasta sistemas de respaldo, auditoría o gestión documental. En este artículo te explico cómo hacerlo de varias formas usando System.IO en C# .NET y Visual Studio.
Requisitos
- Visual Studio 2019 o superior
- Proyecto Windows Forms en C# .NET
- Conocimientos básicos de C#
Importar la librería System.IO
Para trabajar con archivos y carpetas necesitas activar el namespace de entrada y salida al inicio de tu archivo:
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;Método 1 — Listar archivos de una carpeta
La función Directory.GetFiles() devuelve un array de strings con las rutas completas de todos los archivos en una carpeta.
// Obtener todos los archivos de una carpeta
string[] archivos = Directory.GetFiles(@"C:\MiCarpeta");
foreach (string archivo in archivos)
{
Console.WriteLine(archivo);
}Método 2 — Listar carpetas y subcarpetas
La función Directory.GetDirectories() devuelve un array con todas las subcarpetas dentro de una ruta.
// Obtener todas las subcarpetas
string[] carpetas = Directory.GetDirectories(@"C:\MiCarpeta");
foreach (string carpeta in carpetas)
{
Console.WriteLine("> " + carpeta);
}Método 3 — Listar archivos y carpetas juntos
Combina ambas funciones para mostrar archivos y carpetas en un solo listado, diferenciando las carpetas con el símbolo >:
private void ListarContenido(string ruta)
{
// Listar carpetas primero
string[] carpetas = Directory.GetDirectories(ruta);
foreach (string carpeta in carpetas)
{
Console.WriteLine("> " + carpeta);
}
// Luego los archivos
string[] archivos = Directory.GetFiles(ruta);
foreach (string archivo in archivos)
{
Console.WriteLine(archivo);
}
}Llama a la función así:
ListarContenido(@"C:\MiCarpeta");
Método 4 — Mostrar archivos en un DataGridView
Esta es la forma más visual para mostrar el contenido de una carpeta en una aplicación Windows Forms:
private void CargarArchivos(string ruta)
{
// Limpiar el DataGridView
dataGridView1.Columns.Clear();
dataGridView1.Rows.Clear();
// Configurar columnas
dataGridView1.Columns.Add("tipo", "Tipo");
dataGridView1.Columns.Add("nombre", "Nombre");
dataGridView1.Columns.Add("ruta", "Ruta completa");
dataGridView1.Columns[2].Width = 400;
// Agregar carpetas
string[] carpetas = Directory.GetDirectories(ruta);
foreach (string carpeta in carpetas)
{
dataGridView1.Rows.Add(">", Path.GetFileName(carpeta), carpeta);
}
// Agregar archivos
string[] archivos = Directory.GetFiles(ruta);
foreach (string archivo in archivos)
{
dataGridView1.Rows.Add("", Path.GetFileName(archivo), archivo);
}
}Resultado
En mi caso que use el datagridview para visualizar los archivos se veria asi:

Conclusión
Con Directory.GetFiles() y Directory.GetDirectories() puedes listar archivos y carpetas en C# de forma simple y flexible. Desde listados básicos hasta búsquedas recursivas con filtros por extensión e información detallada de cada archivo.
¿Tienes dudas o quieres ver algún caso específico? Deja un comentario.