C#におけるファイル操作の完全ガイド
C#は、強力なファイル操作機能を提供するプログラミング言語です。ファイルの読み書き、ファイルの管理、エラー処理などを簡単に行うことができます。この記事では、C#を使用してファイルを操作する方法について、基本から応用まで詳しく解説します。
1. ファイルの読み書き
C#でファイルを読み書きする方法は多岐にわたりますが、最も一般的なのはSystem.IO
名前空間を使用する方法です。この名前空間には、ファイル操作に関連する多くのクラスが含まれています。

1.1 ファイルの書き込み
ファイルにデータを書き込むために、StreamWriter
クラスを使用することが一般的です。以下に基本的な例を示します。
csharpusing System;
using System.IO;
class Program
{
static void Main()
{
string filePath = "sample.txt";
string content = "こんにちは、C#のファイル操作!";
// StreamWriterを使ってファイルに書き込む
using (StreamWriter writer = new StreamWriter(filePath))
{
writer.WriteLine(content);
}
Console.WriteLine("ファイルに書き込みました。");
}
}
上記のコードでは、StreamWriter
を使用してsample.txt
というファイルに文字列を1行書き込みます。using
ブロックを使用しているため、ファイルが操作後に自動的に閉じられます。
1.2 ファイルの読み込み
ファイルからデータを読み取るには、StreamReader
を使用します。以下は、ファイルからテキストを読み込む方法です。
csharpusing System;
using System.IO;
class Program
{
static void Main()
{
string filePath = "sample.txt";
// StreamReaderを使ってファイルから読み込む
using (StreamReader reader = new StreamReader(filePath))
{
string content = reader.ReadToEnd();
Console.WriteLine("ファイルの内容:");
Console.WriteLine(content);
}
}
}
このコードでは、StreamReader
を使用してsample.txt
ファイルの内容を一度に読み込み、コンソールに表示します。
2. ファイルの存在確認
ファイルが存在するかどうかを確認するには、File.Exists
メソッドを使用します。これにより、指定したパスにファイルが存在するかどうかを簡単にチェックできます。
csharpusing System;
using System.IO;
class Program
{
static void Main()
{
string filePath = "sample.txt";
if (File.Exists(filePath))
{
Console.WriteLine("ファイルが存在します。");
}
else
{
Console.WriteLine("ファイルが存在しません。");
}
}
}
3. ファイルの削除
ファイルを削除するには、File.Delete
メソッドを使用します。このメソッドは、指定されたファイルを完全に削除します。
csharpusing System;
using System.IO;
class Program
{
static void Main()
{
string filePath = "sample.txt";
// ファイルを削除する
if (File.Exists(filePath))
{
File.Delete(filePath);
Console.WriteLine("ファイルを削除しました。");
}
else
{
Console.WriteLine("削除するファイルが見つかりません。");
}
}
}
4. ファイルのコピーと移動
C#では、ファイルをコピーしたり、移動したりすることが簡単にできます。File.Copy
とFile.Move
メソッドを使用します。
4.1 ファイルのコピー
csharpusing System;
using System.IO;
class Program
{
static void Main()
{
string sourcePath = "sample.txt";
string destinationPath = "sample_copy.txt";
// ファイルをコピーする
if (File.Exists(sourcePath))
{
File.Copy(sourcePath, destinationPath, overwrite: true);
Console.WriteLine("ファイルをコピーしました。");
}
else
{
Console.WriteLine("コピー元ファイルが存在しません。");
}
}
}
4.2 ファイルの移動
csharpusing System;
using System.IO;
class Program
{
static void Main()
{
string sourcePath = "sample.txt";
string destinationPath = "new_folder/sample.txt";
// ファイルを移動する
if (File.Exists(sourcePath))
{
File.Move(sourcePath, destinationPath);
Console.WriteLine("ファイルを移動しました。");
}
else
{
Console.WriteLine("移動元ファイルが存在しません。");
}
}
}
5. ファイルの情報取得
ファイルの詳細情報を取得するには、FileInfo
クラスを使用します。このクラスは、ファイルのサイズ、作成日、最終更新日などの情報を提供します。
csharpusing System;
using System.IO;
class Program
{
static void Main()
{
string filePath = "sample.txt";
FileInfo fileInfo = new FileInfo(filePath);
if (fileInfo.Exists)
{
Console.WriteLine("ファイル名: " + fileInfo.Name);
Console.WriteLine("ファイルパス: " + fileInfo.FullName);
Console.WriteLine("ファイルサイズ: " + fileInfo.Length + " バイト");
Console.WriteLine("作成日: " + fileInfo.CreationTime);
Console.WriteLine("最終更新日: " + fileInfo.LastWriteTime);
}
else
{
Console.WriteLine("ファイルが見つかりません。");
}
}
}
6. バイナリファイルの読み書き
テキストファイルだけでなく、バイナリファイルも読み書きすることができます。BinaryReader
とBinaryWriter
を使うことで、バイナリ形式でファイルを扱うことができます。
6.1 バイナリファイルの書き込み
csharpusing System;
using System.IO;
class Program
{
static void Main()
{
string filePath = "binary_data.dat";
byte[] data = { 1, 2, 3, 4, 5 };
using (BinaryWriter writer = new BinaryWriter(File.Open(filePath, FileMode.Create)))
{
writer.Write(data);
}
Console.WriteLine("バイナリデータを書き込みました。");
}
}
6.2 バイナリファイルの読み込み
csharpusing System;
using System.IO;
class Program
{
static void Main()
{
string filePath = "binary_data.dat";
using (BinaryReader reader = new BinaryReader(File.Open(filePath, FileMode.Open)))
{
byte[] data = reader.ReadBytes(5);
Console.WriteLine("読み込んだバイナリデータ:");
foreach (byte b in data)
{
Console.Write(b + " ");
}
}
}
}
7. ファイル操作のエラー処理
ファイル操作を行う際、予期しないエラーが発生する可能性があります。try-catch
構文を使用して、エラーを適切に処理することが重要です。
csharpusing System;
using System.IO;
class Program
{
static void Main()
{
try
{
string filePath = "non_existent_file.txt";
string content = File.ReadAllText(filePath);
Console.WriteLine(content);
}
catch (FileNotFoundException ex)
{
Console.WriteLine("エラー: ファイルが見つかりません - " + ex.Message);
}
catch (IOException ex)
{
Console.WriteLine("入出力エラー: " + ex.Message);
}
}
}
結論
C#でのファイル操作は非常に簡単で、強力なツールを提供しています。System.IO
名前空間のクラスを使うことで、テキストファイルの読み書き、バイナリファイルの操作、ファイルの管理などがスムーズに行えます。ファイル操作を行う際は、エラー処理や適切なリソースの解放を忘れないようにしましょう。