Il metodo Directory.GetFiles consente di recuperare i file con il pattern specificato all'interno di una determinata cartella. Purtroppo, esso non supporta i pattern multipli, ovvero non è possibile usare pattern come *.xls;*.doc per trovare in un colpo solo tutti i file XLS e DOC. Naturalmente si tratta di una limitazione facilmente aggirabile, ad esempio utilizzando il seguente extension method per l'oggetto DirectoryInfo:
using System;
using System.Collections.Generic;
namespace System.IO
{
public static class Utils
{
public static FileInfo[] GetFiles2(this DirectoryInfo directory,
string searchPattern)
{
return GetFiles2(directory, searchPattern,
SearchOption.TopDirectoryOnly);
}
public static FileInfo[] GetFiles2(this DirectoryInfo directory,
string searchPattern, SearchOption searchOption)
{
List<FileInfo> ret = new List<FileInfo>();
string[] patterns = searchPattern.Split(';');
foreach (var pattern in patterns)
{
FileInfo[] files = directory.GetFiles(pattern,
searchOption);
ret.AddRange(files);
}
return ret.ToArray();
}
}
}
Per utilizzarlo, basta scrivere qualcosa del tipo:
FileInfo[] files =
(new DirectoryInfo(@"D:\Users\Marco\Documents")).GetFiles2("*.xls;*.csv;*.doc");
Per trovare tutti i file XLS, CVS e DOC contenuti nella cartella D:\Users\Marco\Documents.
Technorati Tags:
.NET,
Programming,
C#