ファイルを移動(リネーム)する [C#]

C#でファイルを移動する方法について紹介します。
ファイルの移動には、System.IO名前空間のFileInfoクラスのMoveToメソッドを使用するか、FileクラスのMove静的メソッドを使用します。

FileInfoクラスのMoveToメソッドで移動

FileInfoクラスのMoveToメソッドの構文は次のようになります。

MoveToメソッドのパラメーターのdestFileNameに移動後のパスを指定します。

FileInfo.MoveToメソッドの使用例

以下にMoveToメソッドの使用例を示します。

上記の例では「C:\Test\Source」フォルダーにある「BeforeMove.txt」ファイルを「C:\Test\Dest」フォルダーに「AfterMove.txt」という名前で移動しています。
MoveToメソッドでは移動先のフォルダーパス(ここでは「C:\Test\Dest」)が存在しない場合には「System.IO.FileNotFoundException: ‘パスの一部が見つかりません。’」という例外が発生します。
また、移動後のファイルパス(ここでは「C:\Test\Dest\AfterMove.txt」)が存在する場合には「System.IO.IOException: ‘既に存在するファイルを作成することはできません。’」という例外が発生します。
ファイルを移動する前にはDirectory.Exists静的メソッドや、FileInfo.Existsプロパティなどで、移動先のフォルダーとファイルが存在するかどうかを確認した方が安全です。

ディレクトリを移動するDirectoryInfoクラスのMoveToメソッドでは、異なるドライブ間での移動はできませんが、FileInfoクラスのMoveToメソッドでは、移動先に別のドライブ(ボリューム)を指定することができます。例えば上記の例で「C:\Test\Source\BeforeMove.txt」を「D:\Dest\AfterMove.txt」に移動するとDirectoryInfoクラスのMoveToメソッドで発生する「System.IO.IOException: ‘ソースとターゲット パスは同一のルートを持たなければなりません。[移動] 操作はボリューム間で行えません。’」という例外は発生せず、ファイルの移動が完了します。

FileクラスのMove静的メソッドで移動

FileクラスのMove静的メソッドの構文は次のようになります。

Move静的メソッドの1つ目のパラメーターのsourceDirNameには移動するファイルのパスを指定します。2つ目のパラメーターのdestFileNameには移動後のファイルのパスを指定します。destFileNameについては、FileInfoクラスのMoveToメソッド同じです。

File.Move静的メソッドの使用例

以下にMove静的メソッドの使用例を示します。

FileクラスのMove静的メソッドもFileInfoクラスのMoveToメソッド同様に、移動先のフォルダーが存在しない場合や、移動後のファイルが存在する場合には例外が発生します。

ファイル名のリネーム

FileInfoクラスのMoveメソッド、FileクラスのMove静的メソッドはファイル名の変更にも使用します。移動対象のファイルの名称を同階層で変更することでファイル名のリネームが行われます。
次の例ではFileクラスのMove静的メソッドを使用してBeforeName.txtという名前のファイルをAfterName.csvという名前にリネームしています。

サンプルプログラム

Windowsフォームアプリケーションでのプログラムの実装例を記載します。

ユーザーインターフェース

フォームのインターフェースは次のようにします。

ファイル移動サンプルフォームデザイン

移動前のファイルパスを指定するテキストボックス(textBox1)と、移動後のファイルパスを指定するテキストボックス(textBox2)を配置します。
それぞれのテキストボックスにはファイルを参照するダイアログを表示するためのボタンを配置します。
移動前のファイルパスの横にはファイルを開くダイアログボックスを表示するボタン(button1)を配置し、移動後のファイルパスの横には名前を付けて保存ダイアログボックスを表示するボタン(button2)を配置します。
ファイルの移動処理は「button3」ボタンで行います。

ソースコード

サンプルプログラムのフォームには次のようなソースコードを記述します。

サンプルの実行

作成したプログラムを実行します。

ファイル移動サンプルフォーム

「C:\Work\SourceFile」フォルダーに「移動前.txt」という名前のファイルを作成します。

作成した移動するファイル

移動前するファイルのテキストボックスに「C:\Work\SourceFile\移動前.txt」を入力するか「…」ボタンをクリックしてファイルを参照します。
移動後のファイルのテキストボックスに「C:\Work\DestinationFile\移動後.txt」を入力するか「…」ボタンをクリックしてファイルを参照します。

ファイル移動サンプルフォームのパスを入力

[button3]をクリックします。

ファイル移動サンプルフォームの実行結果

ファイルが移動されてメッセージが表示されます。