在 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

一般来说,如果你只做一个操作,你应该使用FileDirectory类中的static方法,而不是创建FileInfoDirectoryInfo对象。

有关处理文件和目录的更多建议,请参阅here。

【讨论】:

请注意,当使用简单的Directory.Move 完成时,将foo 切换到Foo 之类的情况会引发IOException,因为两者都被视为相同的路径。所以有区别......只是说。【参考方案2】:

你应该移动它:

Directory.Move(source, destination);

【讨论】:

【参考方案3】:

一个已经存在。如果您无法克服 System.IO 命名空间的“移动”语法。 Microsoft.VisualBasic.FileIO 命名空间中有一个静态类 FileSystem,其中已经有 RenameDirectoryRenameFile

正如 SLaks 所述,这只是 Directory.MoveFile.Move 的包装。

【讨论】:

他们所做的只是验证参数并调用Directory.MoveFile.Move。我查过了。 是的,同意。我认为他的抱怨是因为“移动”不会让你自动想到“重命名”。如果他想要语法,它以那种格式存在,只是在另一个命名空间中。 移动意味着任何 unix 用户的重命名 :)

以上是关于在 C# 中重命名目录 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 C# / Python 中重命名远程文件服务器上的文件

如何在 Windows 7 中重命名文件夹:名称中包含空格的命令行 [关闭]

在Mac中重命名没有突出显示扩展名的文件名[关闭]

在 Visual Studio 中重命名某些内容时,如何查看“无法解决的冲突”是啥?

如何在mysql中重命名数据库? [复制]

在颠覆工作副本中重命名目录的明智方法