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

C#でテキストファイルを読み書きする方法【StreamReader・StreamWriterの使い方】

C#でテキストファイルを扱う際には、StreamReaderクラスとStreamWriterクラスを使用します。StreamReaderはテキストファイルからのデータ読み取り、StreamWriterはテキストファイルへのデータ書き込みをそれぞれ担当します。どちらもSystem.IO名前空間に属しており、usingディレクティブを使えば、処理終了後に自動的にリソースが解放されるため安全です。

テキストファイルを読み込む

まずは、StreamReaderを使ってテキストファイルの内容を1行ずつ読み込み、コンソールに表示するサンプルコードを見てみましょう。

using System;
using System.IO;

namespace FileApplication {
    class Program {
        static void Main(string[] args) {
            try {
                // ファイルから読み込むためのStreamReaderのインスタンスを作成。
                // usingステートメントにより、StreamReaderも自動的にクローズされる。
                using (StreamReader sr = new StreamReader("d:/new.txt")) {
                    string line;

                    // ファイルの末尾に到達するまで、
                    // 1行ずつ読み込んで表示する。
                    while ((line = sr.ReadLine()) != null) {
                        Console.WriteLine(line);
                    }
                }
            } catch (Exception e) {
                Console.WriteLine("ファイルを読み込めませんでした:");
                Console.WriteLine(e.Message);
            }
            Console.ReadKey();
        }
    }
}

このコードのポイントは以下の通りです。

  • try-catchブロックで例外処理を行い、ファイルが存在しない場合などにも適切に対応できます。
  • ReadLine()メソッドは1行ずつ文字列を読み込み、ファイルの末尾ではnullを返すため、whileループと組み合わせるのが定番のパターンです。
  • usingステートメントを使うことで、スコープを抜けた時点でStreamReaderが自動的に閉じられ、リソースリークを防げます。

テキストファイルに書き込む

次に、StreamWriterを使って配列のデータをテキストファイルに書き込み、その後同じファイルを読み込んで結果を確認する例を紹介します。

サンプルコード

using System;
using System.IO;

namespace FileApplication {
    class Program {
        static void Main(string[] args) {
            string[] names = new string[] {"Jack", "Tom"};

            // StreamWriterでファイルに名前を1行ずつ書き込む。
            using (StreamWriter sw = new StreamWriter("students.txt")) {

                foreach (string s in names) {
                    sw.WriteLine(s);
                }
            }

            // 書き込んだファイルの内容を1行ずつ読み込んで表示する。
            string line = "";
            using (StreamReader sr = new StreamReader("students.txt")) {
                while ((line = sr.ReadLine()) != null) {
                    Console.WriteLine(line);
                }
            }
            Console.ReadKey();
        }
    }
}

実行結果

Jack
Tom

補足ポイント

  • WriteLine()メソッドは文字列を書き込んだ後に行末の改行を自動的に追加します。改行が不要な場合はWrite()メソッドを使用してください。
  • StreamWriterはデフォルトで既存ファイルを上書きします。追記モードで開きたい場合は、第2引数にtrueを指定してnew StreamWriter("students.txt", true)のように記述します。
  • 日本語などのマルチバイト文字を扱う場合は、new StreamReader(path, Encoding.UTF8)のようにエンコーディングを明示的に指定すると、文字化けを防げます。

このようにStreamReaderとStreamWriterを組み合わせれば、C#でのテキストファイルの入出力をシンプルかつ安全に実装できます。ぜひ実際のプロジェクトでも活用してみてください。

  1. PDFファイルのテキストをカット・コピー・貼り付けする4つの方法

    Word文書であればカット・コピー・貼り付けはごく簡単な操作ですが、PDFファイルの場合は少し工夫が必要です。本記事では、PDFをまるで高機能な文書エディターのように扱い、テキストを自由に配置し直すためのベストな方法を紹介します。 注意:スキャン画像から作成されたPDFや、作成者によってコピー&ペースト機能が無効化されているPDFでは、以下の方法は利用できません。 1. PDFリーダーの「テキスト挿入」機能を使う 無料のPDFリーダーの多くには、事前に無効化されていない限り、インラインテキストを挿入する機能が備わっています。Adobe Acrobat Readerを使用している場合、任意のテ

  2. 音声ファイルをテキストに変換する最速の方法|初心者でも簡単にできる7つの手順を徹底解説

    音声読み上げ(TTS)アプリについてはご存じの方も多いでしょう。ではその逆、音声ファイルや楽曲、動画クリップから歌詞やセリフをテキストとして取り出したい場合はどうすればよいのでしょうか。 真っ先に思いつくのは、再生と一時停止を繰り返しながら手作業で文字起こしをする方法ですが、言うまでもなく非常に時間と労力がかかります。そこで便利なのが、音声からテキストへの変換をサポートしてくれるアプリやオンラインツールです。精度は完璧とはいえませんが、インタビューの議事録作成やYouTube動画の字幕起こしなどには十分活用できます。 音声ファイルをテキストに変換するおすすめの方法 Microsoft Word