こんにちは。たいら(@tairaengineer2)です。
この記事では、C#でファイルをコピーするCopyメソッドについて解説します。
スポンサーリンク
前提条件
この記事では、Visual Studio 2017 Communityを使っています。
インストールの仕方は、下の記事をご参考ください。
Copyメソッドとは
Copyメソッドとは、Fileクラスにあり、ファイルをコピーすることができるメソッドです。
usingは
using System.IO;
を使います。
File.Copy Method
名前空間: System.IO
Assemblies: System.IO.FileSystem.dll, mscorlib.dll, netstandard.dll
既存のファイルを新しいファイルにコピーします。
File.Copy Method (System.IO) | Microsoft Docsから引用させて頂きました
Copyメソッドは、引数が異なるオーバーロードされたメソッドが2つあります。
メソッド | 説明 |
---|---|
Copy(String, String) | 既存のファイルを新しいファイルにコピーします。 同じ名前のファイルを上書きできません。 |
Copy(String, String, Boolean) | 既存のファイルを新しいファイルにコピーします。 同じ名前のファイルの上書きが許可されます。 |
それぞれ解説していきます。
引数が2つのCopyメソッド
既存のファイルを新しいファイルにコピーします。 同じ名前のファイルを上書きできません。
public static void Copy (string sourceFileName, string destFileName);
File.Copy Method (System.IO) | Microsoft Docsから引用させて頂きました
引数が2つのCopyメソッドには、
- コピーもとのファイルパス
- コピー先のファイルパス
を設定します。
先ほど例に出したパスの前に【@】がついていますが、これは逐語的文字列というものです。
C# のキーワードを識別子として使用できるようにする。
コード要素のプレフィックスとして @ 文字を使用すると、その要素はC# のキーワードではなく、識別子としてコンパイラに解釈されます。
@ - C# リファレンス | Microsoft Docsから引用させて頂きました
実際にCopyメソッドを使って、ファイルをコピーしてみましょう。
解説で使うC#プログラムの概要
ファイルを用意して、コピーするのみのプログラムです。
コピーしたら、コンソール上に結果を表示します。
ただし、
- コピー先のファイルがある場合
- コピー先のファイルがない場合
の2パターンを作成します。
コンソールプロジェクトを作成するやり方は下の記事をご参考ください。
プログラムを作成したあと、ビルドをするやり方はこちらの記事をご参考ください。
C#サンプルコード
using System;
using System.IO;
namespace ConsoleApp1
{
/// <summary>
/// 引数2つのCopyメソッドでファイルをコピーする
/// </summary>
class Program
{
/// <summary>
/// メイン
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
// ファイルをコピーする(正常パターン)
File.Copy(@"C:\work\コピー基.txt", @"C:\work\コピー先.txt");
// ファイルのサイズを表示
Console.WriteLine("ファイルをコピーが完了しました");
// ファイルをコピーする(異常パターン)
File.Copy(@"C:\work\コピー基.txt", @"C:\work\コピーエラー.txt");
// ファイルのサイズを表示
Console.WriteLine("ファイルをコピーが完了しました");
}
}
}
実行結果
実行する前に、コピーするファイルを確認します。
2つ目のファイルコピーがエラーになるようにしています。
では、実行します。
ファイルをコピーが完了しました
ハンドルされていない例外: System.IO.IOException: ファイル 'C:\work\コピーエラー.
txt' は既に存在します。
場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
場所 System.IO.File.InternalCopy(String sourceFileName, String destFileName,
Boolean overwrite, Boolean checkHost)
場所 System.IO.File.Copy(String sourceFileName, String destFileName)
場所 ConsoleApp1.Program.Main(String[] args) 場所 C:\Users\○○○\source\re
pos\ConsoleApp1\ConsoleApp1\Program.cs:行 24
続行するには何かキーを押してください . . .
2つ目のファイルのコピーは、コピー先のファイルがあるために失敗していますね。
では、フォルダの中身を確認してみます。
1つ目のコピーの【コピー先.txt】はコピーができていることが確認できました!
スポンサーリンク
引数が3つのCopyメソッド
既存のファイルを新しいファイルにコピーします。 同じ名前のファイルの上書きが許可されます。
public static void Copy (string sourceFileName, string destFileName, bool overwrite);
File.Copy Method (System.IO) | Microsoft Docsから引用させて頂きました
引数が3つのCopyメソッドには、
- コピーもとのファイルパス
- コピー先のファイルパス
- 上書きを許可するかどうか
を設定します。
3つ目の引数の上書きを許可するかどうかの意味は下記になります。
true or false | 説明 |
---|---|
true | 上書きを許可する |
false | 上書きを許可しない |
先ほど例に出したパスの前に【@】がついていますが、これは逐語的文字列というものです。
C# のキーワードを識別子として使用できるようにする。
コード要素のプレフィックスとして @ 文字を使用すると、その要素はC# のキーワードではなく、識別子としてコンパイラに解釈されます。
@ - C# リファレンス | Microsoft Docsから引用させて頂きました
実際にCopyメソッドを使って、ファイルをコピーしてみましょう。
解説で使うC#プログラムの概要
ファイルを用意して、コピーするのみのプログラムです。
コピーしたら、コンソール上に結果を表示します。
ただし、
- ファイルの上書きを許可
- ファイルの上書きを許可しない
の2パターンを作成します。
コンソールプロジェクトを作成するやり方は下の記事をご参考ください。
プログラムを作成したあと、ビルドをするやり方はこちらの記事をご参考ください。
C#サンプルコード
using System;
using System.IO;
namespace ConsoleApp1
{
/// <summary>
/// 引数3つのCopyメソッドでファイルをコピーする
/// </summary>
class Program
{
/// <summary>
/// メイン
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
// ファイルをコピーする(正常パターン)
File.Copy(@"C:\work\コピー基.txt", @"C:\work\コピー先.txt", true);
// ファイルのサイズを表示
Console.WriteLine("ファイルをコピーが完了しました");
// ファイルをコピーする(異常パターン)
File.Copy(@"C:\work\コピー基.txt", @"C:\work\コピーエラー.txt", false);
// ファイルのサイズを表示
Console.WriteLine("ファイルをコピーが完了しました");
}
}
}
実行結果
実行する前に、コピーするファイルを確認します。
中身を確認してみます。
まず、【コピー基.txt】を見ます。
次に【コピー先.txt】を見ます。
最後に【コピーエラー.txt】を見ます。
では、実行します。
ファイルをコピーが完了しました
ハンドルされていない例外: System.IO.IOException: ファイル 'C:\work\コピーエラー.
txt' は既に存在します。
場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
場所 System.IO.File.InternalCopy(String sourceFileName, String destFileName,
Boolean overwrite, Boolean checkHost)
場所 System.IO.File.Copy(String sourceFileName, String destFileName, Boolean
overwrite)
場所 ConsoleApp1.Program.Main(String[] args) 場所 C:\Users\○○○\source\re
pos\ConsoleApp1\ConsoleApp1\Program.cs:行 24
続行するには何かキーを押してください . . .
1回目のファイルの上書きは成功していますが、2回目は失敗していますね!
では、それぞれのファイルの中身を確認します。
【コピー先.txt】を確認します。
【コピー基.txt】の内容で上書きできていますね!
では、【コピーエラー.txt】を確認します。
上書きされていないことが確認できました!
スポンサーリンク
まとめ:Copyメソッドを使って、ファイルをコピーしてみよう
以上がCopyメソッドの解説です。
まとめなので、振り返りをしてみます。
usingは
using System.IO;
メソッド | 説明 |
---|---|
Copy(String, String) | 既存のファイルを新しいファイルにコピーします。 同じ名前のファイルを上書きできません。 |
Copy(String, String, Boolean) | 既存のファイルを新しいファイルにコピーします。 同じ名前のファイルの上書きが許可されます。 |
あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ
ほかにもC#解説記事を書いてます。
よければご参考ください。
【C#】ファイルサイズを取得するLengthメソッドについて解説します
【C#】ファイルの存在チェックをするFile.Existsメソッドを解説します
【C#】ファイルを削除する、Deleteメソッドを解説します
今までブログで書いたC#の解説記事のまとめは、こちらをご参考ください。