スライドショースライドショー

【C#入門】テキストファイルを読み込む方法(StreamReader)

こんにちは!エンジニアの中沢です。

C#にはファイル読み込むための「StreamReaderクラス」があります。StreamReaderクラスを使えば、テキストファイルを内容をすべて読み込んだり、1行ずつ読み込むことができます。

この記事では、

  • ファイルの読み込みとは
  • 1度にすべての内容を読み込む方法
  • 1行ずつ読み込む方法
  • という基本的な内容から、

  • ファイルが存在しない場合のエラーを回避する方法
  • などの応用的な使い方に関しても解説していきます。

    今回はこれらの方法を覚えるために、ファイルの読み込みのさまざまな使い方をわかりやすく解説します!

    ファイルの読み込みとは

    ファイルの読み込みには、「StreamReaderクラス」を使います。

    StreamReaderクラスには、ファイルを末尾まで一度に読み込むための「ReadToEndメソッド」や、1行ずつ読み込むための「ReadLineメソッド」が用意されています。

    読み込むファイルが存在しない場合には、例外が発生するので注意してください。

    1度にすべての内容を読み込む方法

    ここでは、1度にすべてのテキストファイルの内容を読み込む方法を解説します。1度にすべてのテキストファイルの内容を読み込むには、「StreamReaderクラス」の「ReadToEndメソッド」を使います。

    StreamReaderクラスの使い方は、コンストラクタの第1引数に読み込むファイルのパスを指定して、第2引数に文字コードを指定します。

    「ReadToEndメソッド」でファイルの読み込みが終わったら、「Closeメソッド」でファイルを閉じる必要があることも忘れないでください。

    テキストファイルを読み込む方法を次のプログラムで確認してみましょう。

    using System;
    using System.IO;
    using System.Text;
    
    namespace Sample
    {
        class Sample
        {
            static void Main()
            {
                StreamReader sr = new StreamReader(@"E:\samurai.txt", Encoding.GetEncoding("Shift_JIS"));
    
                string str = sr.ReadToEnd();
    
                sr.Close();
    
                Console.WriteLine(str);
    
                Console.ReadKey();
            }
        }
    }

    実行結果:

    侍
    エンジニア
    塾

    このようにして、テキストファイルの中身を表示することができました。

    1行ずつ読み込む方法

    テキストファイルを1行ずつ読み込むには、「StreamReaderクラス」の「ReadLineメソッド」を使います。

    次のプログラムでは、テキストファイルの読み取りが終わったことを確認するために、「Peekメソッド」を使っています。Peekメソッドは、読み取り対象の文字がある場合には正の整数を返しますが、読み取る文字がない場合には「-1」を返します。

    そのため、Peekメソッドを使って読み取る文字がなくなるまでwhile文で処理を繰り返しています。

    1行ずつ読み込む方法を次のプログラムで確認してみましょう。

    using System;
    using System.IO;
    using System.Text;
    
    namespace Sample
    {
        class Sample
        {
            static void Main()
            {
                StreamReader sr = new StreamReader(@"E:\samurai.txt", Encoding.GetEncoding("Shift_JIS"));
    
                while (sr.Peek() != -1)
                {
                    Console.WriteLine(sr.ReadLine());
                }
    
                sr.Close();
    
                Console.ReadKey();
            }
        }
    }

    実行結果:

    侍
    エンジニア
    塾

    このようにして、1行ずつ読み込み表示することができました。

    ファイルが存在しない場合のエラー(例外)を回避する方法

    読み込むファイルが存在しない場合には例外が発生します。例外を回避するためには、事前にファイルの存在確認をする「Existsメソッド」を使う必要があります。

    Existsメソッドを使ってファイルのチェックをしてから読み込む方法を次のプログラムで確認してみましょう。

    using System;
    using System.IO;
    using System.Text;
    
    namespace Sample
    {
        class Sample
        {
            static void Main()
            {
                string filePath = @"E:\samurai.txt";
    
                if (File.Exists(filePath))
                {
                    StreamReader sr = new StreamReader(filePath, Encoding.GetEncoding("Shift_JIS"));
    
                    string str = sr.ReadToEnd();
    
                    sr.Close();
    
                    Console.WriteLine(str);
                }
                else
                {
                    Console.WriteLine("ファイルが存在しません");
                }
    
                Console.ReadKey();
            }
        }
    }

    実行結果:

    ファイルが存在しません

    このようにして、ファイルが存在しない場合も正常に終了することができました。

    Existsメソッドの詳しい使い方はこちらの記事で解説しているので、ぜひ確認してください。

    【C#入門】ファイルとフォルダの存在チェックをするExistsメソッド
    更新日 : 2019年5月13日

    まとめ

    いかがでしたか?

    今回はStreamReaderクラスを使ってファイルを読み込む方法を解説しました。ファイルが存在しない場合には例外が発生するので、Existsメソッドでチェックするなどの注意をしてくださいね。

    もし、ファイルを読み込む方法を忘れてしまったらこの記事を確認してください!

    LINEで送る
    Pocket

    無料でSEからWebエンジニアへ転職しませんか?



    侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

    • システムエンジニアという職業だけどコードが書けない
    • 事務作業が多くスキルがないため将来が不安
    • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
    という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

    弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

    既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

    まずは無料体験レッスンを予約する

    書いた人

    中沢 丈

    中沢 丈

    フリーランスエンジニア。
    システム開発からコンテンツ作成まで幅広く対応します。

    連絡先はこちらです。
    [email protected]

    おすすめコンテンツ

    あなたにぴったりなプログラミング学習プランを無料で診断!

    プログラミング学習の効率を劇的に上げる学習メソッドを解説