我最近编写了一个小程序来重命名位于 6 个目录中的一堆文件。程序循环遍历列表中的每个目录,然后使用 File.Move 方法重命名该目录中的每个文件。这些文件被重命名为 cart_buttons_1.png,其中 1 每次递增 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 进行排序以首先查看其他文件。