Day13 前半のゴール
Day13 前半では、プログラムから「ファイルを読み書きする」ための基本機能を学びます。 テキストファイルにメモを保存したり、ログを残したりする処理は、実用的なアプリケーションではほぼ必須です。
ここでは次の3つを中心に、初心者向けにかみ砕いて解説していきます。
File StreamReader StreamWriter
後半で作る「メモ帳アプリ」や「ログ保存」の土台になる、とても重要な内容です。
File クラスを理解する
File クラスとは何をしてくれるのか
File クラスは、ファイルを「一気に読み込む・一気に書き込む」ための便利な機能をまとめたクラスです。 テキストファイルを簡単に扱いたいときに、まず最初に使われることが多いです。
例として、テキストファイルを読み込むコードは次のようになります。
string text = File.ReadAllText("memo.txt");
Console.WriteLine(text);
C#このコードは、memo.txt というファイルの中身をすべて読み込み、文字列として返します。
逆に、テキストを書き込む場合は次のようになります。
File.WriteAllText("memo.txt", "こんにちは、メモです。");
C#このコードは、memo.txt に文字列を書き込みます。 ファイルが存在しない場合は新しく作られ、存在する場合は上書きされます。
深掘りポイント:File は「簡単に使えるが融通はききにくい」
File クラスはとても簡単に使えますが、 「一部だけ読みたい」「少しずつ書きたい」といった細かい制御には向いていません。
そのため、より柔軟な制御をしたいときは、 後で説明する StreamReader や StreamWriter を使うことになります。
StreamReader を理解する
StreamReader は「ファイルを1行ずつ読むための道具」です
StreamReader は、テキストファイルを「ストリーム(流れ)」として扱い、 1行ずつ読み込んだり、少しずつ処理したりするためのクラスです。
基本的な使い方は次のようになります。
using (StreamReader reader = new StreamReader("memo.txt"))
{
string line = reader.ReadLine();
Console.WriteLine(line);
}
C#このコードは、memo.txt の最初の1行を読み込んで表示します。
複数行をすべて読みたい場合は、次のように書きます。
using (StreamReader reader = new StreamReader("memo.txt"))
{
string line;
while ((line = reader.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
C#深掘りポイント:using と後片付け
StreamReader を使うときに必ず出てくるのが using です。
using (StreamReader reader = new StreamReader("memo.txt"))
この書き方には「使い終わったら自動的に後片付け(ファイルを閉じる)してくれる」という意味があります。
ファイルを開いたままにしておくと、 他のプログラムからアクセスできなくなったり、 リソースが無駄に消費されたりするため、 「使い終わったら必ず閉じる」というルールがとても重要です。
using を使うことで、そのルールを自動的に守ることができます。
StreamWriter を理解する
StreamWriter は「ファイルに1行ずつ書くための道具」です
StreamWriter は、テキストファイルに対して「少しずつ書き込む」ためのクラスです。 メモ帳アプリやログ保存などで、複数行を順番に書きたいときに使います。
基本的な使い方は次のようになります。
using (StreamWriter writer = new StreamWriter("memo.txt"))
{
writer.WriteLine("1行目のメモです");
writer.WriteLine("2行目のメモです");
}
C#このコードは、memo.txt に2行分のテキストを書き込みます。
深掘りポイント:上書きと追記
StreamWriter は、デフォルトでは「上書き」になります。 つまり、既存のファイルがあっても中身を消して新しく書き込みます。
既存のファイルに「追記」したい場合は、次のように書きます。
using (StreamWriter writer = new StreamWriter("memo.txt", true))
{
writer.WriteLine("追記されたメモです");
}
C#第2引数の true が「追記モード」を意味します。 これを指定することで、既存の内容を残したまま、末尾に新しい行を追加できます。
File と StreamReader / StreamWriter の違いを整理する
どちらを使うべきかをイメージで理解する
File クラスは「一気に読みたい・一気に書きたい」ときに使います。
例: 設定ファイルを丸ごと読みたい 短いメモを1回だけ保存したい
StreamReader / StreamWriter は「少しずつ読みたい・少しずつ書きたい」ときに使います。
例: ログを1行ずつ追加したい 大きなファイルを行単位で処理したい
この違いを意識しておくと、 「どのクラスを選べばよいか」が自然に判断できるようになります。
メモ帳アプリへのつながりをイメージする
入力した文字をファイルに保存する流れ
メモ帳アプリの基本的な流れは次のようになります。
ユーザーがメモを入力する StreamWriter でファイルに書き込む StreamReader でファイルから読み込んで表示する
この流れを理解しておくと、 後半で実際にメモ帳アプリを作るときに、 「なぜこのクラスを使うのか」がはっきり見えてきます。
ログ保存へのつながりをイメージする
プログラムの動きを記録する
ログ保存では、プログラムの動きやエラー情報を ファイルに1行ずつ書き込んでいきます。
このときに活躍するのが StreamWriter の「追記モード」です。
new StreamWriter("log.txt", true)
とすることで、既存のログを消さずに、 新しいログを末尾に追加していくことができます。
Day13 後半では、これらの考え方を実際のコードに落とし込みながら、 メモ帳アプリとログ保存の具体的な実装を学んでいきます。
