在 C# 中重命名目录 [关闭]
Posted
技术标签:
【中文标题】在 C# 中重命名目录 [关闭]【英文标题】:Renaming a directory in C# [closed] 【发布时间】:2011-01-02 16:44:40 【问题描述】:我在任何地方都找不到 DirectoryInfo.Rename(To) 或 FileInfo.Rename(To) 方法。所以,我写了自己的,我把它贴在这里供任何人使用,如果他们需要的话,因为让我们面对现实吧:MoveTo 方法太过分了,如果你只想重命名一个目录或文件,总是需要额外的逻辑:
public static class DirectoryExtensions
public static void RenameTo(this DirectoryInfo di, string name)
if (di == null)
throw new ArgumentNullException("di", "Directory info to rename cannot be null");
if (string.IsNullOrWhiteSpace(name))
throw new ArgumentException("New name cannot be null or blank", "name");
di.MoveTo(Path.Combine(di.Parent.FullName, name));
return; //done
【问题讨论】:
【参考方案1】:移动和重命名没有区别;您只需致电Directory.Move
。
一般来说,如果你只做一个操作,你应该使用File
和Directory
类中的static
方法,而不是创建FileInfo
和DirectoryInfo
对象。
有关处理文件和目录的更多建议,请参阅here。
【讨论】:
请注意,当使用简单的Directory.Move
完成时,将foo
切换到Foo
之类的情况会引发IOException,因为两者都被视为相同的路径。所以有区别......只是说。【参考方案2】:
你应该移动它:
Directory.Move(source, destination);
【讨论】:
【参考方案3】:一个已经存在。如果您无法克服 System.IO
命名空间的“移动”语法。 Microsoft.VisualBasic.FileIO 命名空间中有一个静态类 FileSystem
,其中已经有 RenameDirectory
和 RenameFile
。
正如 SLaks 所述,这只是 Directory.Move
和 File.Move
的包装。
【讨论】:
他们所做的只是验证参数并调用Directory.Move
和File.Move
。我查过了。
是的,同意。我认为他的抱怨是因为“移动”不会让你自动想到“重命名”。如果他想要语法,它以那种格式存在,只是在另一个命名空间中。
移动意味着任何 unix 用户的重命名 :)以上是关于在 C# 中重命名目录 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Windows 7 中重命名文件夹:名称中包含空格的命令行 [关闭]