понедельник, 20 мая 2013 г.

Как найти файлы в директории с заданными расширениями

Понадобилось мне обработать все изображения в папке, а так как расширений у изображений много, это и gif, jpg, bmp и тп, то простым Directory.GetFiles(path, *.jpg) тут не обойтись. Поэтому нашел простое решение. Можно было б использовать лямбда выражение и сделать код короче, но так нагляднее.

Способ использует цикл в цикле, и проходит по каждому найденному файлу, в директории.

string SelectFolder = "C:/Work/Folder"; // Путь к каталогу
string[] typeOfFiles = {"*.jpg", "*.jpeg", "*.gif", "*.png", "*.bmp", "*.flw" }; 
   foreach (string typeOfFile in typeOfFiles)
   {
       string[] filesForWork = Directory.GetFileSystemEntries(SelectFolder, typeOfFile);
       // Показываем с какими файлами работаем
       foreach (string filesFinded in filesForWork)
       {
        // Вывести только названия файлов без пути
           FileInfo imageName = new FileInfo(filesFinded);
    // вывести названия файлов в листбокс
           listBox1.Items.Add(imageName.Name);
       }
}


Это еще один способ код нашел на cyberforum.ru/:
string[] extensions = new[] { ".jpg", ".tiff", ".bmp" };
 
FileInfo[] files =
    dinfo.GetFiles()
         .Where(f => extensions.Contains(f.Extension.ToLower()))
         .ToArray();