.NET4.0で追加されたAPIによってテキストファイルの読み込み処理が楽に書けるようになった。
以前はファイル読み込み処理といえば以下のように書いたものである。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace FileApiLesson { class Program { static void Main(string[] args) { using (StreamReader sr = new StreamReader("test.txt")) { String line; while ((line = sr.ReadLine()) != null) { Console.WriteLine(line); } } } } }
.NET4.0になり、IEnumerable型で読み取れるReadLines()メソッドがFileクラスに追加された。
このメソッドを使うと以下のように書ける。
foreach (var line in File.ReadLines("test.txt")) { Console.WriteLine(line); }
このメソッドは.NET2.0で追加されたReadAllLines()メソッドよりも以下の点で優れている。
・逐次読み込むため、始めにファイルの内容を全てメモリに取り込まなくて良い。
・LINQを使って柔軟に処理ができる
最終的にファイルの全ての内容が必要な場合は結果的に同じになるが、
ある条件に当てはまる行のみ取り出したい、といった場合はReadLines()メソッドの方が効率的である。
最後に、ReadLines()とLINQを使って、”hoge”という文字列が含まれる行のみ取り出す例を示す。
foreach (var line in File.ReadLines("test.txt").Where(line=%gt;line.Contains("hoge"))) { Console.WriteLine(line); }