C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#でファイルを読み込む方法まとめ:テキストファイルとバイナリファイルの基本

C#では、System.IO名前空間に含まれるクラスを使うことで、テキストファイルやバイナリファイルなど、さまざまな形式のファイルを簡単に読み書きできます。この記事では、代表的な2つの読み込み方法——「StreamReaderを使ったテキストファイルの読み込み」と「BinaryReader/BinaryWriterを使ったバイナリファイルの読み書き」——をサンプルコード付きで解説します。

1. StreamReaderでテキストファイルを読み込む

テキストファイルを1行ずつ読み込みたい場合は、StreamReaderクラスが便利です。ReadLine()メソッドを使うことで、ファイルの終端(null)に達するまで順番に行を読み出せます。

サンプルコード

using System;
using System.IO;

namespace FileApplication {
    class Program {
        static void Main(string[] args) {
            try {
                using (StreamReader sr = new StreamReader("d:/new.txt")) {
                    string line;

                    // ファイルの終端に達するまで行を読み込んで表示する
                    while ((line = sr.ReadLine()) != null) {
                        Console.WriteLine(line);
                    }
                }
            } catch (Exception e) {
                // エラー内容をユーザーに通知する
                Console.WriteLine("ファイルを読み込めませんでした:");
                Console.WriteLine(e.Message);
            }
            Console.ReadKey();
        }
    }
}

実行結果(エラー時の出力例)

The file could not be read:
Could not find a part of the path "/home/cg/root/4281363/d:/new.txt".

この例では、指定されたパスが存在しないため例外が発生し、catchブロック内のエラーメッセージが表示されています。実際の開発では、ファイルパスの指定ミスやアクセス権限の問題なども考慮して、適切な例外処理を記述することが重要です。

2. BinaryReader / BinaryWriterでバイナリファイルを読み書きする

数値や真偽値、文字列などのデータをそのままの形式で保存・復元したい場合は、BinaryWriterBinaryReaderを使用します。以下のサンプルでは、int型・double型・bool型・string型のデータをバイナリファイルに書き込み、その後読み戻しています。

サンプルコード

using System.IO;

namespace BinaryFileApplication {
    class Program {
        static void Main(string[] args) {
            BinaryWriter bw;
            BinaryReader br;

            int i = 25;
            double d = 3.14157;
            bool b = true;
            string s = "I am happy";

            // ファイルを作成する
            try {
                bw = new BinaryWriter(new FileStream("mydata", FileMode.Create));
            } catch (IOException e) {
                Console.WriteLine(e.Message + "\n ファイルを作成できません。");
                return;
            }

            // データをファイルに書き込む
            try {
                bw.Write(i);
                bw.Write(d);
                bw.Write(b);
                bw.Write(s);
            } catch (IOException e) {
                Console.WriteLine(e.Message + "\n ファイルに書き込めません。");
                return;
            }
            bw.Close();

            // ファイルからデータを読み込む
            try {
                br = new BinaryReader(new FileStream("mydata", FileMode.Open));
            } catch (IOException e) {
                Console.WriteLine(e.Message + "\n ファイルを開けません。");
                return;
            }

            try {
                i = br.ReadInt32();
                Console.WriteLine("Integer data: {0}", i);
                d = br.ReadDouble();
                Console.WriteLine("Double data: {0}", d);
                b = br.ReadBoolean();
                Console.WriteLine("Boolean data: {0}", b);
                s = br.ReadString();
                Console.WriteLine("String data: {0}", s);
            } catch (IOException e) {
                Console.WriteLine(e.Message + "\n ファイルから読み込めません。");
                return;
            }

            br.Close();
            Console.ReadKey();
        }
    }
}

ポイント解説

  • FileStream:ファイルへの入出力ストリームを表します。FileMode.Createで新規作成、FileMode.Openで既存ファイルを開きます。
  • 書き込みと読み込みの順序:バイナリデータは書き込んだ順序どおりに読み込む必要があります。Write()した順序と同じ順序でReadInt32()、ReadDouble()などを呼び出しましょう。
  • リソースの解放:使い終わったReaderやWriterは必ずClose()を呼び出すか、usingステートメントで自動的に破棄するようにします。
  • 例外処理:IOExceptionをキャッチすることで、ファイル作成・書き込み・読み込みの各段階で発生しうるエラーに個別に対応できます。

まとめ

テキストファイルの読み込みにはStreamReader、バイナリデータの保存と復元にはBinaryWriter/BinaryReaderがそれぞれ適しています。用途に応じてこれらのクラスを使い分けることで、C#でのファイル操作を効率的かつ安全に行えます。

  1. MacでInstagramのDMを送る方法|使えるアプリ2選をわかりやすく解説

    Instagramは、写真や動画をオンラインで手軽に共有できるソーシャルメディアプラットフォームとして世界中で人気を集めています。このサービスは、世界最大級のSNSを運営するMeta(旧Facebook)社が提供しており、日々多くのユーザーが利用しています。 Instagramには、DM(ダイレクトメッセージ)機能を使ってフォロワーや友人と個人的なやり取りができる便利な特徴があります。しかし、このDM機能はスマートフォンやWindows PCなどほとんどのデバイスで利用できる一方、Macでは公式アプリが提供されていないため、そのままでは使えません。「MacからInstagramのDMを送りたい

  2. Windows 11でファイルを解凍する3つの方法【エクスプローラー・PowerShell・コマンドプロンプト】

    ZIPファイル(圧縮ファイル)は、ファイルサイズを小さくしたり、複数のファイルをひとつにまとめたりするのに最適な形式です。ハードディスクのストレージ容量を節約できるため、多くのユーザーに活用されています。しかし一方で、圧縮されたZIPファイルの解凍方法がわからないという方も少なくありません。本記事では、Microsoftが無料で提供している標準機能だけを使って、Windows 11でZIPファイルを解凍する方法を詳しく解説します。 Windows 11でファイルを解凍する3つの方法 方法1:エクスプローラーを使って解凍する Windowsのエクスプローラー(ファイルエクスプローラー)では、ZI