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;
Consulte Cómo obtener archivos con múltiples extensiones usando métodos de extensión.
no es posible especificar filtros múltiples en una sola llamada al método GetFiles (). Puedes encontrar alternativas aquí