안녕 당신은 내가 http://msdn.microsoft.com/en-us/library/wz42302f.aspx에서 커뮤니티 콘텐츠로 발견 된이를 사용할 수 있습니다.
private static string[] GetFiles(string sourceFolder, string filters)
{
return filters.Split('|').SelectMany(filter => System.IO.Directory.GetFiles(sourceFolder, filter)).ToArray();
}
게으른 평가를 사용하는 대안 (닷넷 4.0 만) :
private static IEnumerable<string> GetFiles(string sourceFolder, string filters)
{
return filters.Split('|').SelectMany(filter => System.IO.Directory.EnumerateFiles(sourceFolder, filter));
}
당신은 그것을 사용할 수 있습니다 GetFiles("dir", "*.jpg|*.gif|*.jpeg|*.bmp|*.png")
입니다. 그것은 본질적으로 각 필터에 대한 검색이므로 이 아닌만큼 효율적입니다.
마지막 버전입니다 (단 닷넷 4.0이지만 2.0 솔루션을 최소로 할 수있다) :
private static IEnumerable<string> GetImageFiles(string sourceFolder)
{
return from file in System.IO.Directory.EnumerateFiles(sourceFolder)
let extension = Path.GetExtension(file)
where extension == ".jpg" || extension == ".gif" || extension == ".png"
select file;
}
는 나는 한 번만 루프 때문에 마지막 하나는 빠른 믿습니다. 그러나 이는 패턴 검색이
Directory
에 구현되는 방식과 OS 검색 방법에 따라 다릅니다. 내가하지 않은 성능 테스트가 필요합니다.
가 쉬운 옵션이 없습니다 :
내가 파일을 처리하기 전에,이 파일이 처리되는 제한하는 기능을 사용하여 한 조각 ... 를 잊어 버렸 밝혀졌습니다. 'ImageFormat'에는 확장 기능이 없습니다. 그것들을 정적 배열이나 사전에 하드 코딩해야합니다. – Andrey