将文件名转换为小写

时间:2013-07-27 12:08:48

标签: c#

希望就如何转换文件夹中的现有文件名提出一些建议...全部为小写。

我觉得一个好的开始就是将文件名保存在列表中并将它们全部转换为更低。

如何将文件夹中的现有文件名替换为小写?

List<string> codes = new List<string>();
string[]productCodes = Directory.GetFiles(@"C:\Users\Ariang\Desktop\screenshotslowercase\screenshots");         

codes = productCodes.ToList();
codes = codes.ConvertAll(t => t.ToLower());

3 个答案:

答案 0 :(得分:7)

这应该有效:

foreach (var file in Directory.GetFiles(@"C:\Temp\testrename"))
{
    File.Move(file, file.ToLowerInvariant());
}

一些注意事项,首先我测试了这个并且它有效,其他人提到使用临时变量,但我不需要这样做。

另外,我在同一个目录上多次运行,第二次或第三次没有得到IOException,所以我认为不需要进行额外的检查。

但是,我在Windows 8上并以.Net 4.5为目标,在早期版本的Windows或.Net上可能会有所不同。

答案 1 :(得分:1)

不需要列表和所有这些。从目录中简单读取文件名并使用

System.IO.File.Move("oldfilename", "oldfilename".ToLower());



string[] files = Directory.GetFiles(dir);
foreach(string file in files)
{        
    System.IO.File.Move(file, file.ToLowerInvariant());
}

答案 2 :(得分:1)

Windows系统看不到文件名中低位和高位字母之间的区别。这就是为什么你不能转换像“MyFile” - &gt; “MYFILE”。改为使用两个步骤:

foreach (var file in Directory.GetFiles(@"C:\Temp\testrename"))
{
   var tempName = "." + file.ToLowerInvariant();
   File.Move(file, tempName);
   File.Move(tempName, file.ToLowerInvariant());
}