在C#中重命名目录

Ale*_*all 61 c# directory file-io rename

我无法在任何地方找到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
    }
}
Run Code Online (Sandbox Code Playgroud)

SLa*_*aks 115

移动和重命名之间没有区别; 你应该打电话Directory.Move.

通常,如果您只执行单个操作,则应使用和类中的static方法而不是创建和对象.FileDirectoryFileInfoDirectoryInfo

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

  • 注意,当使用简单的`Directory.Move`完成时,像`foo`到`Foo`这样的切换情况会抛出IOException,因为两者都被视为相同的路径.所以有一点不同......只是说. (10认同)

Rub*_*ias 59

你应该移动它:

Directory.Move(source, destination);
Run Code Online (Sandbox Code Playgroud)


jsm*_*ith 15

一个已经存在.如果你无法克服System.IO命名空间的"Move"语法.有一个静态类FileSystem的内Microsoft.VisualBasic.FileIO同时具有一个命名空间RenameDirectory,并RenameFile在其中了.

正如SLaks提到的,这只是一个包装Directory.MoveFile.Move.

  • 他们所做的就是验证参数并调用`Directory.Move`和`File.Move`.我检查了. (9认同)
  • +1肮脏的废话,蝙蝠侠! (4认同)
  • 是的,同意了.我认为他的抱怨是因为"移动"不会让你自动想到"重命名".如果他想要语法,它就以该格式存在,只存在于另一个命名空间中. (3认同)