【C#】ファイル読み書きの基本(StreamReader・StreamWriter)

C# でファイルを扱う際に基本となるのが StreamReaderStreamWriter です。これらはテキストファイルを効率よく読み書きするためのクラスで、ファイル入出力処理の基本を理解するのに最適です。本記事では StreamReaderStreamWriter の基本的な使い方を紹介します。

StreamReaderでファイルを読み込む

StreamReader を使うと、テキストファイルを 1 行ずつ、または全体をまとめて読み込むことができます。using を使うことで、読み込みが終わったら自動的にリソースが解放されます。

using System;
using System.IO;

class Program
{
    static void Main()
    {
        // ファイルを1行ずつ読み込む
        using (StreamReader reader = new StreamReader("sample.txt"))
        {
            string line;
            while ((line = reader.ReadLine()) != null)
            {
                Console.WriteLine(line);
            }
        }
    }
}

ReadLine() は 1 行ずつ読み込み、null で終端を示します。ファイル全体を一度に読み込みたい場合は ReadToEnd() が便利です。

using (StreamReader reader = new StreamReader("sample.txt"))
{
    string text = reader.ReadToEnd();
    Console.WriteLine(text);
}

StreamWriterでファイルに書き込む

StreamWriter を使うと、テキストファイルにデータを書き込めます。既存ファイルがある場合は上書きされますが、第2引数に true を渡すと追記モードになります。

using System;
using System.IO;

class Program
{
    static void Main()
    {
        // 新規作成(または上書き)
        using (StreamWriter writer = new StreamWriter("output.txt"))
        {
            writer.WriteLine("1行目のテキスト");
            writer.WriteLine("2行目のテキスト");
        }

        // 追記モード
        using (StreamWriter writer = new StreamWriter("output.txt", true))
        {
            writer.WriteLine("追記されたテキスト");
        }
    }
}

エンコーディングを指定する

日本語を扱う場合、文字コードの違いで文字化けが起こることがあります。第3引数に Encoding.UTF8 を指定することで UTF-8 で書き込みができます。

using (StreamWriter writer = new StreamWriter("utf8.txt", false, System.Text.Encoding.UTF8))
{
    writer.WriteLine("こんにちは、世界!");
}

まとめ

C# のファイル入出力の基本は以下の通りです。

  • StreamReader … ファイルを読み込む(ReadLine, ReadToEnd
  • StreamWriter … ファイルに書き込む(上書き・追記)
  • using 構文でリソースを確実に解放する
  • 日本語を扱う場合は Encoding を意識する

StreamReaderStreamWriter を理解すれば、ログ保存や設定ファイルの読み込みなど、日常的なファイル操作がスムーズに行えるようになります。