Как декапитализировать все расширения файлов, заданные в каталоге?

    originalFiles = Directory.GetFiles(fbFolderBrowser.SelectedPath).Where(file => !file.EndsWith(".db")).ToArray();

foreach (string file in originalFiles)
    {
         File.Move(file, file.Replace(".JPG", ".jpg"));
         File.Move(file, file.Replace(".TIFF", ".tiff"));
         File.Move(file, file.Replace(".JPEG", ".jpeg"));
         File.Move(file, file.Replace(".BMP", ".bmp"));
         File.Move(file, file.Replace(".GIF", ".gif"));
    }

Я думал, что выполнение вышеизложенного изменит расширения файлов на нижний регистр.

У меня есть файлы в каталоге:

AAA_1.jpg
AAA_2.JPG
BBB_1.TIFF
BBB_2.GIF

Я хочу, чтобы это было:

AAA_1.jpg
AAA_2.jpg
BBB_1.tiff
BBB_2.gif

Как мне это сделать?


person RJ.    schedule 22.08.2012    source источник
comment
Вот аналогичный вопрос: Изменить расширение файла Это должно решить вашу проблему.   -  person CSharpDev    schedule 23.08.2012


Ответы (2)


Используйте метод ToLower() класса String, а Метод ChangeExtension() класса Path. Это должно позволить вам переводить все расширения в нижний регистр без необходимости перечисления всех возможных расширений.

DirectoryInfo folder = new DirectoryInfo("c:\whatever");
FileInfo[] files = dirInfo.GetFiles("*.*");


foreach (var file in files)
{
    File.Move(file.FullName, Path.ChangeExtension(file, 
       Path.GetExtension(file).ToLower()));     
}
person Robert Harvey    schedule 22.08.2012
comment
Я попытаюсь. Но я использую редактор уценки в качестве IDE, поэтому не могу гарантировать, что он сработает с первой попытки! - person Robert Harvey; 23.08.2012

Я понял. Спасибо за подсказку Роберт.

foreach (string file in originalFiles)
{
  File.Move(file, Path.ChangeExtension(file, Path.GetExtension(file).ToLower()));
}
person RJ.    schedule 22.08.2012