2009-11-30 82 views
1

让: 文件夹重命名 C:\ TEMP \ Torename 到: C:\ TEMP \ ToRename如何在C#中重命名文件夹/目录?

Directory.Move不起作用,因为该文件夹(:\ TEMP \ Torename)已经存在。

我正在寻找不涉及创建临时文件夹的解决方案。 我有这个解决方案: 移动到临时文件夹(唯一名称),例如c:\ temp \ TorenameTemp 从临时文件夹移动到新文件夹。例如c:\ temp \ ToRename 问题是我的文件夹可能变得非常大,移动可能需要一些时间才能执行。我喜欢windows explorer解决方案,用户无论大小如何都可以在其中进行重命名。

感谢您的时间。

+0

您试图更改现有文件夹的大小写吗? – SLaks 2009-11-30 00:49:02

+0

首先创建名称正确的目录会更容易吗? – 2009-11-30 00:52:19

+0

SLaks:是的 马克:是的 - 我很喜欢,但我们无法控制用户,信息正在保存在磁盘上,这就是我需要解决此问题的原因 – 2009-12-15 02:21:37

回答

6
Directory.Move(@"C:\Temp\Dir1", @"C:\Temp\dir1_temp"); 
Directory.Move(@"C:\Temp\dir1_temp", @"C:\Temp\dir1"); 

除非将文件移动到不同的卷,否则文件将不会移动。如果目标位于同一卷上,则只有目录名称会更改。

+0

此解决方案将用于网络驱动器。 (\\ server \ MyShare \ dir1) – 2009-12-15 02:23:56

+0

只要音量是相同的,你会没事的。 – 2009-12-15 17:55:59

4

Directory.Move不能与目录大小一起缩放(除非您复制到另一个驱动器),所以调用它两次没有任何问题。

+0

值得注意的是它必须如何处理B +树的工作。 – 2012-08-27 17:30:08

+0

@ColeJohnson:什么? – SLaks 2012-08-27 17:49:36

+0

指针。它只是更改目录的父目录 – 2012-08-27 18:08:08

-1

Directory.Move的目录 File.Move文件

0

这里是如何能够做到:

My.Computer.FileSystem.RenameDirectory("c:\temp\Torename", "ToRename") 

第一个参数是当前目录,第二个参数是的新名称该目录。

来源:FileSystem.RenameDirectory Method

+0

此示例在VB.NET中。 C#自然没有“我的”命名空间,不幸的是没有替代它。您必须在项目中添加Microsoft.VisualBasic引用,并将其下的FileIO命名空间导入到您希望使用等效语句“FileSystem.RenameDirectory(”c:\ temp \ Torename“,”ToRename“ );”。希望这可以帮助! :) – Jeff 2016-05-16 05:51:58