プログラミング

C#でのファイル操作ガイド

C#におけるファイル操作の完全ガイド

C#は、強力なファイル操作機能を提供するプログラミング言語です。ファイルの読み書き、ファイルの管理、エラー処理などを簡単に行うことができます。この記事では、C#を使用してファイルを操作する方法について、基本から応用まで詳しく解説します。

1. ファイルの読み書き

C#でファイルを読み書きする方法は多岐にわたりますが、最も一般的なのはSystem.IO名前空間を使用する方法です。この名前空間には、ファイル操作に関連する多くのクラスが含まれています。

1.1 ファイルの書き込み

ファイルにデータを書き込むために、StreamWriterクラスを使用することが一般的です。以下に基本的な例を示します。

csharp
using 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を使用します。以下は、ファイルからテキストを読み込む方法です。

csharp
using 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メソッドを使用します。これにより、指定したパスにファイルが存在するかどうかを簡単にチェックできます。

csharp
using 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メソッドを使用します。このメソッドは、指定されたファイルを完全に削除します。

csharp
using 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.CopyFile.Moveメソッドを使用します。

4.1 ファイルのコピー
csharp
using 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 ファイルの移動
csharp
using 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クラスを使用します。このクラスは、ファイルのサイズ、作成日、最終更新日などの情報を提供します。

csharp
using 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. バイナリファイルの読み書き

テキストファイルだけでなく、バイナリファイルも読み書きすることができます。BinaryReaderBinaryWriterを使うことで、バイナリ形式でファイルを扱うことができます。

6.1 バイナリファイルの書き込み
csharp
using 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 バイナリファイルの読み込み
csharp
using 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構文を使用して、エラーを適切に処理することが重要です。

csharp
using 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名前空間のクラスを使うことで、テキストファイルの読み書き、バイナリファイルの操作、ファイルの管理などがスムーズに行えます。ファイル操作を行う際は、エラー処理や適切なリソースの解放を忘れないようにしましょう。

Back to top button