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

C#でバイナリファイルを読み書きする方法(BinaryReader・BinaryWriter)

C#でバイナリファイルを読み書きする方法(BinaryReader・BinaryWriter)
C#でバイナリファイルを読み書きする方法(BinaryReader・BinaryWriter)

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

生徒

「先生、C#で画像や数値データをファイルに保存したり、読み込んだりする方法ってありますか?」

先生

「良い質問ですね。C#では『バイナリファイル』を扱うことで、文字だけでなく、数値や画像などのデータも保存・読み込みできるんですよ。」

生徒

「バイナリファイルって、テキストファイルとは違うんですか?」

先生

「そうです。テキストファイルは文字が読めますが、バイナリファイルは『0と1のデータのかたまり』なので、人間には読めません。その代わり、データを正確に保存できるという特徴があります。」

生徒

「なるほど。じゃあ、そのバイナリファイルをC#で扱うにはどうすればいいですか?」

先生

「C#には BinaryWriterBinaryReader という便利なクラスが用意されています。それを使えば簡単に読み書きできますよ!」

1. バイナリファイルとは?

1. バイナリファイルとは?
1. バイナリファイルとは?

バイナリファイルとは、データを「0と1(バイナリデータ)」の形で保存したファイルのことです。例えば、画像ファイル(.jpgや.png)、音声ファイル(.mp3)などもバイナリデータでできています。

テキストファイルのように人間が読むことはできませんが、プログラムが扱うには効率的で正確な形式です。C#では、数値・文字列・真偽値などをまとめて保存できるのが特徴です。

2. BinaryWriterを使ってデータを書き込む

2. BinaryWriterを使ってデータを書き込む
2. BinaryWriterを使ってデータを書き込む

BinaryWriterは、バイナリデータをファイルに書き込むためのクラスです。数値や文字列をそのままの形式で保存できるため、文字化けなどの心配がありません。

使い方はとても簡単で、ファイルを開いて Write() メソッドでデータを書き込むだけです。


using System;
using System.IO;

class Program
{
    static void Main()
    {
        // バイナリファイルにデータを書き込む
        using (BinaryWriter writer = new BinaryWriter(File.Open("data.bin", FileMode.Create)))
        {
            writer.Write(123);            // 整数
            writer.Write(3.14);           // 小数
            writer.Write(true);           // 真偽値
            writer.Write("こんにちは");   // 文字列
        }

        Console.WriteLine("バイナリファイルにデータを書き込みました。");
    }
}

バイナリファイルにデータを書き込みました。

using文を使うことで、ファイルを自動的に閉じてくれます。FileMode.Createは、ファイルがなければ新しく作り、すでにある場合は上書きします。

3. BinaryReaderを使ってデータを読み込む

3. BinaryReaderを使ってデータを読み込む
3. BinaryReaderを使ってデータを読み込む

BinaryReaderは、バイナリファイルに保存されたデータを読み込むためのクラスです。ReadInt32()ReadString()など、型に応じたメソッドでデータを取り出します。


using System;
using System.IO;

class Program
{
    static void Main()
    {
        // バイナリファイルからデータを読み込む
        using (BinaryReader reader = new BinaryReader(File.Open("data.bin", FileMode.Open)))
        {
            int number = reader.ReadInt32();
            double pi = reader.ReadDouble();
            bool flag = reader.ReadBoolean();
            string message = reader.ReadString();

            Console.WriteLine($"整数: {number}");
            Console.WriteLine($"小数: {pi}");
            Console.WriteLine($"真偽値: {flag}");
            Console.WriteLine($"文字列: {message}");
        }
    }
}

整数: 123
小数: 3.14
真偽値: True
文字列: こんにちは

ポイントは、書き込んだ順番で読み込むことです。順番が違うとデータの種類が合わず、正しく読み取れません。

4. バイナリファイルとテキストファイルの違い

4. バイナリファイルとテキストファイルの違い
4. バイナリファイルとテキストファイルの違い

初心者の方がよく混乱するのが、バイナリファイルとテキストファイルの違いです。以下のような特徴があります。

  • テキストファイル:人間が読める形式(例:「123」「こんにちは」など)
  • バイナリファイル:コンピューターが扱いやすい形式(例:画像・音声・プログラムデータなど)

テキストファイルはメモ帳などで中身を確認できますが、バイナリファイルを開くと意味不明な記号のように見えます。これは、文字としてではなく「生のデータ」として保存されているからです。

5. バイナリファイルの活用例

5. バイナリファイルの活用例
5. バイナリファイルの活用例

バイナリファイルは、次のような場面でよく使われます。

  • ゲームのセーブデータの保存
  • アプリケーション設定情報の保存
  • 画像・音声・動画データの読み込み
  • 通信データの送受信

例えば、プレイヤーのスコアやレベルなどをバイナリ形式で保存すれば、読み込みも高速で、改ざんされにくくなります。テキストファイルよりも効率的にデータを扱えるのがメリットです。

6. ファイル操作時の注意点

6. ファイル操作時の注意点
6. ファイル操作時の注意点

バイナリファイルを扱う際に注意すべきポイントもあります。

  • ファイルの読み書き順番を間違えない
  • 異なる型で読み取らない(例:書き込み時にintで、読み込み時にstringで読むとエラー)
  • ファイルを開いたら必ず閉じる(usingで自動的に閉じるのが安全)

これらを守ることで、安全かつ正確にデータを保存・読み込むことができます。

7. まとめ:BinaryReaderとBinaryWriterを使いこなそう

7. まとめ:BinaryReaderとBinaryWriterを使いこなそう
7. まとめ:BinaryReaderとBinaryWriterを使いこなそう

今回学んだように、C#ではBinaryReaderBinaryWriterを使うことで、テキストではなくバイナリ形式のデータを簡単に扱うことができます。これらを使いこなせば、設定ファイルやゲームデータなど、幅広い場面で応用できるようになります。

カテゴリの一覧へ
新着記事
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句の使い方を完全ガイド!初心者でもわかる共通部品の再利用方法