カテゴリ: C# 更新日: 2025/11/02

C#のStreamReaderとStreamWriterを使ったテキストファイル操作

C#のStreamReaderとStreamWriterを使ったテキストファイル操作
C#のStreamReaderとStreamWriterを使ったテキストファイル操作

先生と生徒の会話形式で理解しよう

生徒

「先生、C#でファイルに文字を書き込んだり、読み取ったりする方法を知りたいです!」

先生

「良い質問ですね。C#では、StreamReaderStreamWriterというクラスを使って、テキストファイルの読み書きができますよ。」

生徒

「その2つはどう違うんですか?」

先生

「簡単に言えば、StreamWriterはファイルに書き込むためのクラス、StreamReaderはファイルを読むためのクラスです。それでは、実際の使い方を学んでみましょう!」

1. StreamReaderとStreamWriterとは?

1. StreamReaderとStreamWriterとは?
1. StreamReaderとStreamWriterとは?

StreamReaderStreamWriterは、C#でテキストファイルを操作するための基本的なクラスです。どちらもSystem.IOという名前空間に含まれています。

これらのクラスを使うことで、ファイルを開いて内容を読み取ったり、新しいテキストを書き込んだりすることができます。たとえば、日記やメモ帳アプリのように「文字を保存したい」場合に非常に便利です。

ファイル操作はパソコンの世界で「入出力(I/O:Input/Output)」と呼ばれます。ファイルから読み取るのが「入力(Input)」、書き込むのが「出力(Output)」です。

2. ファイルに書き込む:StreamWriterの使い方

2. ファイルに書き込む:StreamWriterの使い方
2. ファイルに書き込む:StreamWriterの使い方

まずは、StreamWriterを使ってテキストファイルに文字を書き込む方法を見てみましょう。


using System;
using System.IO;

class Program
{
    static void Main()
    {
        // ファイルに書き込む
        using (StreamWriter writer = new StreamWriter("sample.txt"))
        {
            writer.WriteLine("こんにちは、C#の世界へようこそ!");
            writer.WriteLine("StreamWriterを使うと、簡単にファイルに文字を書けます。");
        }

        Console.WriteLine("ファイルへの書き込みが完了しました。");
    }
}

このプログラムを実行すると、同じフォルダ内に「sample.txt」というファイルが作成され、指定した文字列が書き込まれます。

ポイント:usingを使うことで、ファイルを自動的に閉じてくれるため、メモリの無駄やファイルロックの問題を防げます。


ファイルへの書き込みが完了しました。

ファイルの中身を開いてみると、次のようになっています。


こんにちは、C#の世界へようこそ!
StreamWriterを使うと、簡単にファイルに文字を書けます。

3. ファイルを読み込む:StreamReaderの使い方

3. ファイルを読み込む:StreamReaderの使い方
3. ファイルを読み込む:StreamReaderの使い方

次に、StreamReaderを使ってファイルの内容を読み取る方法を学びましょう。


using System;
using System.IO;

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

ReadLine()メソッドは、ファイルを1行ずつ読み取る命令です。ファイルの終わりに達するとnull(何もない状態)を返すので、while文で最後まで読み取ることができます。


こんにちは、C#の世界へようこそ!
StreamWriterを使うと、簡単にファイルに文字を書けます。

このようにして、先ほど書き込んだ内容をコンソールに表示できます。つまり、StreamWriterで書き込み、StreamReaderで読み取るという流れになります。

4. ファイルの追記モードを使う

4. ファイルの追記モードを使う
4. ファイルの追記モードを使う

実際のアプリでは、既存のファイルに新しい情報を追加したい場合があります。たとえば、日記を毎日追記するようなケースです。そんなときは、StreamWriterのコンストラクタに「true」を指定して「追記モード(Append)」で開きます。


using (StreamWriter writer = new StreamWriter("sample.txt", true))
{
    writer.WriteLine("この行は追記された内容です。");
}

このように書くと、既存の内容を消さずに新しい行が追加されます。trueを指定しない場合は、古い内容が上書きされてしまうので注意しましょう。

5. ファイルの存在確認とエラー対策

5. ファイルの存在確認とエラー対策
5. ファイルの存在確認とエラー対策

ファイル操作を行う際、対象のファイルが存在しないとエラー(例外)が発生します。そのため、File.Exists()メソッドを使って、ファイルが存在するかを確認してから読み込むようにするのが安全です。


if (File.Exists("sample.txt"))
{
    using (StreamReader reader = new StreamReader("sample.txt"))
    {
        Console.WriteLine(reader.ReadToEnd());
    }
}
else
{
    Console.WriteLine("ファイルが見つかりません。");
}

ReadToEnd()メソッドを使うと、ファイル全体をまとめて読み取ることができます。短いテキストを一気に読みたいときに便利です。

6. 文字コードに注意しよう(UTF-8など)

6. 文字コードに注意しよう(UTF-8など)
6. 文字コードに注意しよう(UTF-8など)

ファイルの文字が「文字化け」する場合は、文字コード(エンコーディング)が原因のことがあります。日本語では「UTF-8」や「Shift-JIS」といった文字コードがよく使われます。

StreamWriterStreamReaderは、文字コードを指定して開くこともできます。


using (StreamWriter writer = new StreamWriter("utf8.txt", false, System.Text.Encoding.UTF8))
{
    writer.WriteLine("UTF-8で書き込みました。");
}

using (StreamReader reader = new StreamReader("utf8.txt", System.Text.Encoding.UTF8))
{
    Console.WriteLine(reader.ReadToEnd());
}

このように明示的にエンコーディングを指定しておくと、異なる環境でも文字化けしにくくなります。

カテゴリの一覧へ
新着記事
C#で複数ファイルをまとめて操作する方法(foreach・LINQ)をやさしく解説!
C#のインターフェースとは?クラス設計を柔軟にする基本技術
C#のコンストラクタの役割と使い方!オブジェクト初期化の基本
COBOLでデータベース接続を理解しよう!初心者でもわかる基本の考え方
人気記事
No.1
Java&Spring記事人気No1
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.2
Java&Spring記事人気No2
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.3
Java&Spring記事人気No3
C#の数値型をマスターしよう!int・double・decimalの違いと使い方
No.4
Java&Spring記事人気No4
COBOLのCOPY句の使い方を完全ガイド!初心者でもわかる共通部品の再利用方法