web-dev-qa-db-ja.com

C#でディレクトリの名前を変更する

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
    }
}
59
Alex Marshall

移動と名前変更の間に違いはありません。単に Directory.Move

一般に、単一の操作のみを行う場合は、staticおよびFileオブジェクトを作成する代わりに、DirectoryおよびFileInfoクラスでDirectoryInfoメソッドを使用する必要があります。

ファイルおよびディレクトリを操作する際の詳細なアドバイスについては、 here を参照してください。

114
SLaks

移動する必要があります。

Directory.Move(source, destination);
59
Rubens Farias

すでに存在します。 System.IO名前空間の「移動」構文を乗り越えられない場合。 Microsoft.VisualBasic.FileIO名前空間内にFileSystemRenameDirectoryの両方が既に存在する静的クラスRenameFileがあります。

SLaksで述べたように、これはDirectory.MoveFile.Moveの単なるラッパーです。

15
jsmith