C# | ゼロからはじめるプログラミング、30日で基礎を学ぶC#:基本機能を身に付ける - Day13:ファイル操作

C# 30日で身につけるC#
スポンサーリンク
スポンサーリンク

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 後半では、これらの考え方を実際のコードに落とし込みながら、 メモ帳アプリとログ保存の具体的な実装を学んでいきます。

タイトルとURLをコピーしました