1

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

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

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

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());
4

3 回答 3

7

这应该有效:

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

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

另外,我在同一个目录上运行了多次,第二次或第三次都没有收到 IOException,所以我认为没有必要进行任何额外的检查。

However, I am on Windows 8 and targeting .Net 4.5, things may be different on earlier versions of Windows or .Net.

于 2013-07-27T12:12:57.413 回答
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());
}
于 2013-07-27T12:11:59.880 回答
1

Windows system doesn't see difference betweeen lower and upper letters in file names. Thats why you can't convert like "MyFile" -> "myfile". Use two steps instead:

foreach (var file in Directory.GetFiles(@"C:\Temp\testrename"))
{
   var tempName = "." + file.ToLowerInvariant();
   File.Move(file, tempName);
   File.Move(tempName, file.ToLowerInvariant());
}
于 2013-07-27T12:17:52.920 回答