read from files example check c# .net file directory

from - search files folder c#



Obtener archivos del directorio con patrĂ³n (6)

Posible duplicado:
¿Puedes llamar a Directory.GetFiles () con múltiples filtros?

¿Es posible obtener por ej. Archivos .c y .h del directorio. Uso de Directory.GetFiles("C:/", " .c; .h"); No funciona. Es una lástima invocar Directory.GetFiles(...); dos veces.. :(

Gracias.


Aquí hay algunas funciones útiles para simular tener múltiples filtros:

// .NET 4.0 friendly public static IEnumerable<string> EnumerateFiles(string path, params string[] filters) { return filters.Length == 0 ? Directory.EnumerateFiles(path) : filters.SelectMany(filter => Directory.EnumerateFiles(path, filter)); } // .NET 3.5 friendly public static IEnumerable<string> GetFiles(string path, params string[] filters) { return filters.Length == 0 ? Directory.GetFiles(path) : filters.SelectMany(filter => Directory.GetFiles(path, filter)); }


Para .Net 3.5.

public IEnumerable<string> GetFiles( string basePath, params string[] searchPatterns) { if (searchPatterns == null || searchPatterns.Length == 0) { return Directory.GetFiles(basePath); } return Enumerable.SelectMany(searchPatterns, p => Directory.GetFiles(basePath, p)); }

Uso:

GetFiles(@"c:/", "*.c", "*.h");

es probable que desee agregar alguna validación


Si está usando .NET 4.0, iría con Directory.EnumerateFiles :

var files = from f in Directory.EnumerateFiles("C://") where f.EndsWith(".c") || f.EndsWith(".h") select f;


puedes probar algo como esto:

var query = from p in Directory.GetFiles(@"C:/").AsEnumerable() where p.Contains(".c") || p.Contains(".h") select p;



no es posible especificar filtros múltiples en una sola llamada al método GetFiles (). Puedes encontrar alternativas aquí