【发布时间】:2011-11-16 13:52:21
【问题描述】:
我有一个程序可以将文件或文件夹重命名为小写名称。我写了这段代码:
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);
}
}
}
}
但我得到以下异常:
“源路径和目标路径必须不同。”
我该如何解决这个问题?
【问题讨论】:
-
Windows 不区分大小写,就文件名而言。
-
好的。但是它如何显示文件名?
-
它使用保存的内容。但是在比较文件名时 -
"FILENAME" == "filename" == "FileName",就它而言。 -
我认为 Windows 操作系统不允许在同一文件夹中包含给定文件,例如“test.txt”和“Test.txt”。这就是为什么你的例外。 MoveTo 将文件复制到新位置并删除旧位置。改用 FileSystem.Rename (msdn.microsoft.com/en-gb/library/…)
-
@PilgerstorferFranz 虽然在标准情况下你是对的 Windows/NTFS 实际上可以配置为允许这样做。
标签: c# .net file-rename fileinfo directoryinfo