Listar todos los archivos en un directorio en C#
Esta publicación discutirá cómo enumerar todos los archivos en un directorio en C#.
1. Usando Directory.GetFiles()
método
Puedes usar el Directory.GetFiles() método para obtener la lista de archivos en el directorio especificado. Toma la ruta relativa o absoluta del directorio para buscar y devuelve una matriz de cadenas que contiene los nombres de los archivos (incluidas sus rutas) en el directorio especificado, sin un orden fijo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
using System; using System.IO; public class Example { public static void Main() { string path = @"C:\Dir"; string[] files = Directory.GetFiles(path); foreach (string file in files) { Console.WriteLine(file); } } } |
los Directory.GetFiles()
El método está sobrecargado para aceptar el patrón de búsqueda para que coincida con los archivos en el directorio especificado. Por ejemplo, el siguiente código enumerará todos los archivos en el directorio especificado con el .jpg
extensión.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
using System; using System.IO; public class Example { public static void Main() { string path = @"C:\Dir"; string[] files = Directory.GetFiles(path, "*.jpg"); foreach (string file in files) { Console.WriteLine(file); } } } |
Por defecto, el Directory.GetFiles()
El método realiza la búsqueda solo en el directorio actual. Para extender la operación de búsqueda para incluir todos sus subdirectorios, puede proporcionar el SearchOption.AllDirectories
opción como el tercer parámetro. Por ejemplo, el siguiente código enumerará todos los archivos presentes en el directorio especificado y todos sus subdirectorios con cualquier extensión (asterisco (*)
coincide con cualquier tipo de archivo).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
using System; using System.IO; public class Example { public static void Main() { string path = @"C:\Dir"; string[] files = Directory.GetFiles(path, "*", SearchOption.AllDirectories); foreach (string file in files) { Console.WriteLine(file); } } } |
Si necesita obtener los nombres de todos los archivos junto con todos los nombres de todos sus subdirectorios, considere usar el Directory.GetFileSystemEntries
método en su lugar. Por ejemplo, el siguiente código enumerará recursivamente todos los archivos y subdirectorios presentes en el directorio especificado con cualquier extensión.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
using System; using System.IO; public class Example { public static void Main() { string path = @"C:\Users\adity\OneDrive\Desktop\New folder"; string[] files = Directory.GetFileSystemEntries(path, "*", SearchOption.AllDirectories); foreach (string file in files) { Console.WriteLine(file); } } } |
2. Usando DirectoryInfo.GetFiles()
método
Como alternativa, puede utilizar el DirectoryInfo.GetFiles() método para devolver una lista de archivos en el directorio actual. Aquí hay un código de trabajo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
using System; using System.IO; public class Example { public static void Main() { string path = @"C:\Dir"; DirectoryInfo directory = new DirectoryInfo(path); FileInfo[] files = directory.GetFiles(); foreach (FileInfo file in files) { Console.WriteLine(file.Name); } } } |
Como el Directory.GetFiles()
, la DirectoryInfo.GetFiles()
El método está sobrecargado para aceptar el patrón de búsqueda. El siguiente ejemplo devolverá todos los archivos en el directorio especificado con el .png
extensión.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using System; using System.IO; public class Example { public static void Main() { string path = @"C:\Dir"; DirectoryInfo directory = new DirectoryInfo(path); FileInfo[] files = directory.GetFiles("*.png"); foreach (FileInfo file in files) { Console.WriteLine(file.Name); } } } |
Puede extender la operación de búsqueda a todos los subdirectorios especificando el SearchOption.AllDirectories
opción. El siguiente código enumerará todos los archivos en el directorio especificado y todos sus subdirectorios.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using System; using System.IO; public class Example { public static void Main() { string path = @"C:\Dir"; DirectoryInfo directory = new DirectoryInfo(path); FileInfo[] files = directory.GetFiles("*", SearchOption.AllDirectories); foreach (FileInfo file in files) { Console.WriteLine(file.Name); } } } |
3. Rutina personalizada
Finalmente, puede incluso escribir su rutina personalizada para ampliar la búsqueda e incluir todos los subdirectorios del directorio de origen, sin tener que utilizar el SearchOption.AllDirectories
opción en el Directory.GetFiles()
método. La idea es iterar sobre los archivos en el directorio actual y procesarlos. Si el directorio contiene subdirectorios, haga esto recursivamente.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
using System; using System.IO; public class Example { public static void WalkDirectory(string path) { foreach (string file in Directory.GetFiles(path)) { Console.WriteLine(file); } foreach (string dir in Directory.GetDirectories(path)) { WalkDirectory(dir); } } public static void Main() { string path = @"C:\Dir"; WalkDirectory(path); } } |
Se trata de listar todos los archivos en un directorio en C#.