C#でファイルのコピー・移動・リネームを行う方法を徹底解説!初心者でも理解できる基本操作
生徒
「先生、C#でファイルをコピーしたり、移動したり、名前を変えたりしたいんですけど、どうやるんですか?」
先生
「いい質問ですね。C#では、Fileクラスを使えば、簡単にファイルをコピー・移動・リネームすることができますよ。」
生徒
「えっ?そんなに簡単にできるんですか?」
先生
「はい。ファイル操作に慣れると、パソコンのファイル管理も理解しやすくなります。では、具体的に見ていきましょう!」
1. C#でファイルをコピーする方法
C#でファイルをコピーするには、System.IO名前空間の中にあるFile.Copy()メソッドを使います。このメソッドを使うことで、元のファイルを残したまま、別の場所に同じ内容のファイルを作成することができます。
コピーとは、「元のファイルをそのまま複製する」ことです。たとえば、デスクトップにあるsample.txtをバックアップ用フォルダにコピーする、という操作が簡単にできます。
using System;
using System.IO;
class Program
{
static void Main()
{
string sourcePath = "C:\\temp\\sample.txt"; // 元のファイルのパス
string destinationPath = "C:\\backup\\sample.txt"; // コピー先のパス
File.Copy(sourcePath, destinationPath, true);
Console.WriteLine("ファイルをコピーしました。");
}
}
この例では、File.Copy()の3つ目の引数trueは「上書きしてもよい」という意味です。もしコピー先に同名ファイルがあっても、上書きされます。
ファイルをコピーしました。
2. C#でファイルを移動する方法
次に、ファイルを「移動」する方法を見てみましょう。ファイルの移動は、File.Move()メソッドを使います。移動とは、「元の場所から別の場所にファイルを動かす」ことです。コピーとは違い、元の場所にはファイルが残りません。
例えば、作業フォルダから整理済みフォルダへファイルを移すときなどに使えます。
using System;
using System.IO;
class Program
{
static void Main()
{
string sourcePath = "C:\\temp\\report.txt";
string destinationPath = "C:\\archive\\report.txt";
File.Move(sourcePath, destinationPath);
Console.WriteLine("ファイルを移動しました。");
}
}
ファイルを移動しました。
もし移動先に同じ名前のファイルがあると、エラーになります。上書きする機能はFile.Move()にはありません。その場合は、先にFile.Delete()で削除してから移動するなどの工夫が必要です。
3. C#でファイル名を変更(リネーム)する方法
実は「リネーム(名前変更)」も、移動と同じFile.Move()メソッドで行えます。フォルダの場所はそのままで、ファイル名だけを変えるイメージです。
たとえば、data.txtというファイルをdata_2025.txtという名前に変更したいときは、次のように書きます。
using System;
using System.IO;
class Program
{
static void Main()
{
string oldName = "C:\\temp\\data.txt";
string newName = "C:\\temp\\data_2025.txt";
File.Move(oldName, newName);
Console.WriteLine("ファイル名を変更しました。");
}
}
ファイル名を変更しました。
このように、ファイルを別フォルダに移動する場合も、同じフォルダ内で名前を変更する場合も、File.Move()を使えばOKです。
4. ファイルが存在するか確認してから操作する
コピーや移動を行う前に、ファイルが本当に存在するかを確認しておくのが安全です。存在しないファイルを操作しようとすると、エラーが出てプログラムが止まってしまいます。
File.Exists()メソッドを使えば、指定したファイルが存在するか簡単にチェックできます。
using System;
using System.IO;
class Program
{
static void Main()
{
string sourcePath = "C:\\temp\\info.txt";
string destinationPath = "C:\\backup\\info.txt";
if (File.Exists(sourcePath))
{
File.Copy(sourcePath, destinationPath, true);
Console.WriteLine("ファイルをコピーしました。");
}
else
{
Console.WriteLine("指定したファイルが見つかりません。");
}
}
}
指定したファイルが見つかりません。
このようにif文で確認しておくことで、安心してファイル操作を行うことができます。これは実務でも非常によく使われる基本テクニックです。
5. 実際の開発でよくある使い方
ファイルのコピー・移動・リネームは、業務アプリケーションやバックアップツールなどで非常によく使われます。例えば、「毎日データをコピーしてバックアップを取る」「古いファイルを日付付きで保存する」といった処理は、この基本操作を応用することで簡単に実現できます。
また、フォルダ内のファイルを一括で移動したり、ファイル名に日付や時刻を自動でつけることも可能です。ファイル操作の基礎をしっかり理解しておくと、こうした応用もスムーズに行えるようになります。
これらの操作に慣れてくると、C#で自分だけのファイル整理アプリや自動バックアップツールを作ることも夢ではありません。
まとめ
C#におけるファイル操作の全体像を振り返る
ここまでの記事では、C#を使ってファイルのコピー、移動、リネームを行う基本的な方法について学んできました。 プログラミング初心者の方にとって、ファイル操作は少し難しそうに感じる分野かもしれませんが、実際には Fileクラスが用意してくれている便利なメソッドを正しく使えば、複雑な処理を書く必要はありません。 ファイルのコピーにはFile.Copy、ファイルの移動や名前変更にはFile.Moveを使う、という基本ルールを理解するだけで、 日常的なファイル管理とほぼ同じことをC#のプログラムから実行できるようになります。 これらの操作は、業務システム、ツール開発、個人用アプリなど、あらゆる場面で頻繁に使われるため、 早い段階で身につけておくことがとても重要です。
コピー・移動・リネームの違いを整理しよう
コピー、移動、リネームは似ているようで役割が異なります。 コピーは元のファイルを残したまま同じ内容のファイルを作る操作で、バックアップや複製に向いています。 移動はファイルの場所を変更する操作で、整理やアーカイブ処理によく使われます。 リネームはファイルの場所を変えずに名前だけを変更する操作で、実は移動と同じFile.Moveで実現できる点が特徴です。 これらの違いを意識して使い分けることで、意図しないファイル削除や上書きといったトラブルを防ぐことができます。 特に初心者のうちは、「今やりたいのはコピーなのか移動なのか」を一度考えてからコードを書く習慣をつけると安心です。
ファイル存在確認と安全なプログラムの考え方
実際の開発では、必ずしもファイルが存在するとは限りません。 そのため、File.Existsを使って事前にファイルの有無を確認することは、 安全で安定したプログラムを書くうえで欠かせない考え方です。 存在しないファイルをコピーや移動しようとするとエラーが発生し、プログラムが途中で止まってしまいます。 こうしたエラーを防ぐために、if文と組み合わせて条件分岐を行うことで、 利用者に分かりやすいメッセージを表示したり、別の処理に切り替えたりすることができます。 これは実務でも非常によく使われる基本テクニックであり、ファイル操作に限らず、 C#全体のプログラミングスタイルにもつながる大切な考え方です。
まとめとして覚えておきたい基本サンプル
using System;
using System.IO;
class Program
{
static void Main()
{
string source = "C:\\temp\\sample.txt";
string backup = "C:\\backup\\sample.txt";
if (File.Exists(source))
{
File.Copy(source, backup, true);
Console.WriteLine("バックアップを作成しました。");
}
else
{
Console.WriteLine("元のファイルが存在しません。");
}
}
}
このようなコードは、ファイル操作の基本が一通り詰まった例です。 ファイルの存在確認を行い、問題なければコピーを実行し、結果を表示する。 この流れを理解できていれば、応用として複数ファイルの処理や、 日付を使ったリネーム処理などにも挑戦しやすくなります。 最初は短いコードでも、少しずつ機能を追加していくことで、 実践的なC#プログラムを書けるようになります。
生徒
「コピーと移動とリネームが、全部C#で簡単にできるのが分かって安心しました。 特にリネームもFile.Moveでできるのは意外でした。」
先生
「そうですね。仕組みを知ると、ファイル操作はそこまで難しくありません。 大切なのは、それぞれの操作の意味を理解して使い分けることです。」
生徒
「File.Existsで確認してから処理するのも、実務っぽくて勉強になりました。」
先生
「とても良いポイントに気づきましたね。 エラーを防ぐ考え方は、今後どんなプログラムを書くときにも役立ちますよ。」
生徒
「次は、複数のファイルをまとめて操作する方法にも挑戦してみたいです。」
先生
「その意欲が大切です。今日学んだ基本操作を土台に、少しずつレベルアップしていきましょう。」