こんにちは!エンジニアの中沢です。
C#にはファイル読み込むための「StreamReaderクラス」があります。StreamReaderクラスを使えば、テキストファイルを内容をすべて読み込んだり、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メソッドの詳しい使い方はこちらの記事で解説しているので、ぜひ確認してください。
まとめ
いかがでしたか?
今回はStreamReaderクラスを使ってファイルを読み込む方法を解説しました。ファイルが存在しない場合には例外が発生するので、Existsメソッドでチェックするなどの注意をしてくださいね。
もし、ファイルを読み込む方法を忘れてしまったらこの記事を確認してください!