文件或文件夹重命名为小写在 C# 中使用 DirectoryInfo/FileInfo.MoveTo()

ahm*_*iee 3 .net c# directoryinfo fileinfo file-rename

我有一个程序可以将文件或文件夹重命名为小写名称。我写了这段代码:

    private void Replace(string FolderLocation, string lastText, string NewText)
    {
        if (lastText == "")
        {
            lastText = " ";
        }
        if (NewText == "")
        {
            NewText = " ";
        }

        DirectoryInfo i = new DirectoryInfo(FolderLocation);
        string NewName = "";
        if (checkBox2.Checked)
        {
            if (i.Parent.FullName[i.Parent.FullName.Length - 1].ToString() != "\\") //For parents like E:/
            {
                NewName = i.Parent.FullName + "\\" + i.Name.Replace(lastText, NewText);
            }
            else
            {
                NewName = i.Parent.FullName + i.Name.Replace(lastText, NewText);
            }

                NewName = NewName.ToLower();


            if (NewName != i.FullName)
            {
                 i.MoveTo(NewName);
            }
            foreach (DirectoryInfo sd in i.GetDirectories())
            {
                Replace(sd.FullName, lastText, NewText);
            }
        }
        if (checkBox1.Checked)
        {
            foreach (FileInfo fi in i.GetFiles())
            {
                NewName = fi.Directory + "\\" + fi.Name.Replace(lastText, NewText);

                    NewName = NewName.ToLower();

                if (NewName != fi.FullName)
                {
                    fi.MoveTo(NewName);
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

但我得到以下异常:

“源路径和目标路径必须不同。”

我该如何解决这个问题?

Ode*_*ded 6

由于 Windows 不区分大小写,就文件名而言,您需要将文件重命名为临时名称,然后用小写字符重命名。