我最近编写了一个小程序来重命名位于6个目录中的一堆文件。该程序从列表中遍历每个目录,然后使用File.Move方法重命名该目录中的每个文件。这些文件被重命名为cart_buttons_1.png,每次增加1。为重命名的文件排序
public static int RenameFiles(DirectoryInfo d, StreamWriter sqlStreamWriter,
int incrementer, int category, int size)
{
FileInfo[] files = d.GetFiles("*.png");
foreach (FileInfo fileInfo in files)
{
File.Move(fileInfo.FullName, d.FullName + "cart_button_" + incrementer + ".png");
incrementer++;
}
return incrementer;
}
我现在遇到的问题是,当我运行该程序不止一次运行良好,直到它击中包含100记录的文件夹了。 d.Getfiles方法首先检索所有带有100的文件,导致IOException,因为它试图重命名的文件已经存在于该文件夹中。我找到的解决方法只是选择文件名中包含100个的所有记录,并将它们全部重命名为'z'或其他内容,以便将它们全部组合在一起。任何想法或想法如何解决这个问题。可能有一些方法可以对GetFiles进行排序,以便首先查看其他人。
如果我们知道它们都在同一个目录中,那么'(fi => fi.Name)'会稍微快一点吗? – Rotem
@Rotem - 微型优化。 – Oded
数组仍然首先返回cart_buttons_100.png。该文件夹从85开始,运行到115.所以当它排序它仍然会出现:100..115,85,86 ... –