77

我在任何地方都找不到 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
    }
}
4

3 回答 3

138

移动和重命名没有区别;你应该简单地打电话给Directory.Move.

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

有关使用文件和目录时的更多建议,请参见此处

于 2010-01-07T22:00:55.383 回答
73

你应该移动它:

Directory.Move(source, destination);
于 2010-01-07T22:00:16.227 回答
17

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

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

于 2010-01-07T22:05:05.803 回答