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でバイナリファイルを読み書きする
数値や真偽値、文字列などのデータをそのままの形式で保存・復元したい場合は、BinaryWriterとBinaryReaderを使用します。以下のサンプルでは、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#でのファイル操作を効率的かつ安全に行えます。
-
MacでInstagramのDMを送る方法|使えるアプリ2選をわかりやすく解説
Instagramは、写真や動画をオンラインで手軽に共有できるソーシャルメディアプラットフォームとして世界中で人気を集めています。このサービスは、世界最大級のSNSを運営するMeta(旧Facebook)社が提供しており、日々多くのユーザーが利用しています。 Instagramには、DM(ダイレクトメッセージ)機能を使ってフォロワーや友人と個人的なやり取りができる便利な特徴があります。しかし、このDM機能はスマートフォンやWindows PCなどほとんどのデバイスで利用できる一方、Macでは公式アプリが提供されていないため、そのままでは使えません。「MacからInstagramのDMを送りたい
-
Windows 11でファイルを解凍する3つの方法【エクスプローラー・PowerShell・コマンドプロンプト】
ZIPファイル(圧縮ファイル)は、ファイルサイズを小さくしたり、複数のファイルをひとつにまとめたりするのに最適な形式です。ハードディスクのストレージ容量を節約できるため、多くのユーザーに活用されています。しかし一方で、圧縮されたZIPファイルの解凍方法がわからないという方も少なくありません。本記事では、Microsoftが無料で提供している標準機能だけを使って、Windows 11でZIPファイルを解凍する方法を詳しく解説します。 Windows 11でファイルを解凍する3つの方法 方法1:エクスプローラーを使って解凍する Windowsのエクスプローラー(ファイルエクスプローラー)では、ZI