ファイルをコピーする [C#]

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

FileInfoクラスのCopyToメソッドでコピー

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

CopyToメソッドのパラメーターのdestFileNameにコピー先のパスを指定します。

FileInfo.CopyToメソッドの使用例

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

上記の例では「C:\Test\Source」フォルダーにある「BeforeCopy.txt」ファイルを「C:\Test\Dest」フォルダーに「AfterCopy.txt」という名前でコピーしています。
CopyToメソッドではコピー先のフォルダーパス(ここでは「C:\Test\Dest」)が存在しない場合には「System.IO.FileNotFoundException: ‘パスの一部が見つかりません。’」という例外が発生します。
また、コピー先のファイルパス(ここでは「C:\Test\Dest\AfterCopy.txt」)が存在する場合には「System.IO.IOException: ‘既に存在するファイルを作成することはできません。’」という例外が発生します。

ファイルを上書きコピーする

FileInfoクラスのCopyToメソッドでは、コピー先のファイルパスのみを指定して実行すると、コピー先のフォルダーに同名のファイルが存在する場合に例外が発生しますが、パラメーターを指定することでファイルを上書きすることもできます。
FileInfoクラスのCopyToメソッドで、コピー先のファイルを上書きするかどうかを指定する場合の構文は、次のようになります。

CopyToメソッドの2つ目のパラメーターのoverwriteにコピー先のファイルが存在する場合に上書きするかどうかをtrueまたはfalseで指定します。trueを指定するとファイルが存在する場合に上書きします。falseを指定した場合は、2つ目のパラメーターを省略した場合と同様にファイルが存在する場合に例外が発生します。

コピー先のファイルを上書きする場合のFileInfo.CopyToメソッドの使用例

以下にコピー先のファイルを上書きする場合のCopyToメソッドの使用例を示します。

FileクラスのCopy静的メソッドでコピー

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

Copy静的メソッドの1つ目のパラメーターのsourceDirNameにはコピーするファイルのパスを指定します。2つ目のパラメーターのdestFileNameにはコピー先のファイルのパスを指定します。3つ目のパラメーターのoverwriteにはコピー先のファイルを上書きするかどうかを指定します。2つ目のパラメーターのdestFileNameと3つ目のパラメーターのoverwriteについては、FileInfoクラスのCopyToメソッド同じです。

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

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

引数のrecursiveを指定しない場合

FileクラスのCopy静的メソッドもFileInfoクラスのCopyToメソッド同様に、コピー先のフォルダーが存在しない場合には例外が発生します。

サンプルプログラム

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

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

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

ファイルコピーサンプルフォームデザイン

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

ソースコード

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

サンプルの実行

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

ファイルコピーサンプルフォーム

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

作成したコピーするファイル

コピー元するファイルのテキストボックスに「C:\Work\SourceFile\コピー元.txt」を入力するか「…」ボタンをクリックしてファイルを参照します。
コピー先のファイルのテキストボックスに「D:\Work\DestinationFile\コピー先.txt」を入力するか「…」ボタンをクリックしてファイルを参照します。

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

「button3」ボタンまたは「button4」ボタンをクリックします。

ファイルコピーサンプルフォームの実行結果

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