重命名具有相同名称的目录不同的情况

时间:2009-10-26 00:26:50

标签: c# .net vb.net rename

我正在尝试将c#中的目录重命名为只有不同情况的名称。

例如: f:\ test到f:\ TEST

我试过这段代码:

var directory = new DirectoryInfo("f:\\test");
directory.MoveTo("f:\\TEST");

我得到一个IOException - 源和目标路径必须不同。我也尝试过具有相同结果的Directory.Move()。

这是怎么做到的?我是否必须创建一个单独的临时目录,将包含的文件从原始目录移动到临时目录,然后删除原始目录,并重命名临时目录?

4 个答案:

答案 0 :(得分:11)

好吧,您不需要创建单独的目录并移动所有内容。只需将文件夹重命名为不同的文件夹,然后返回到您想要的名称:

var dir = new DirectoryInfo(@"F:\test");
dir.MoveTo(@"F:\test2");
dir.MoveTo(@"F:\TEST");

答案 1 :(得分:1)

为什么不重命名目录temp,然后重命名为TEST

答案 2 :(得分:1)

即使.NET方法DirectoryInfo.MoveTo在名称相同时抛出异常,也可以像这样调用Windows API MoveFile函数来设置目录名称的大小:

bool success = MoveFile(dirInfo.FullName, dirInfo.FullName);

有了这个外部声明:

[DllImport("kernel32", SetLastError = true)]
private static extern bool MoveFile(string lpExistingFileName, string lpNewFileName);

只有在名称不同的情况下才能正常使用。当名称已完全按照指定时,我没有尝试过这样调用它。

这样做的好处是目录永远不会以其原始名称消失。

虽然它只适用于Windows,但它有缺点。

答案 3 :(得分:-1)

在这种情况下答案是肯定的 - 文件系统本身并不会将两者视为不同,因此您需要删除并添加新名称(或按照建议移动/删除/移动)< / p>