[C#] テキストファイルを検索しながら効率的に読み込む File.ReadLines メソッド
.NET Framework 4 から追加された System.IO.File.ReadLines メソッド は巨大なファイルの読み込みにも対応した便利なメソッドだ。
サンプル・テキストファイル (d:\test_utf8.txt)
テキストファイルを読み込みつつ、"Taylor" が含まれる行を検索して列挙している。これが一行で完結してしまうのだからすごい。
ただ、一つだけ注意しなければいけないことは、テキストファイルのエンコードである。
UTF-8 の場合はそのまま読み込むことができるのだが、日本語が含まれた Shift-JIS などのエンコード形式のファイルは文字化けする。
その場合は、エンコード形式を指定する必要がある。
サンプル・テキストファイル (d:\test.txt)
サンプル・テキストファイル (d:\test_utf8.txt)
Michael Williams Christopher White John Taylor Robert Smith James Jones Charles Johnson Daniel Thomas Mark Wilson John Williams William Thomas Christopher Jackson William Thomas Charles Thomas Michael Smith Thomas Jones Richard Taylor Michael Johnson Mark Smith Michael Miller Paul Wilson
using System.IO; foreach (var line in File.ReadLines(@"d:\test_utf8.txt").Where(line => line.Contains("Taylor"))) { Console.WriteLine(line); } // 出力 // John Taylor // Richard Taylor
テキストファイルを読み込みつつ、"Taylor" が含まれる行を検索して列挙している。これが一行で完結してしまうのだからすごい。
ただ、一つだけ注意しなければいけないことは、テキストファイルのエンコードである。
UTF-8 の場合はそのまま読み込むことができるのだが、日本語が含まれた Shift-JIS などのエンコード形式のファイルは文字化けする。
その場合は、エンコード形式を指定する必要がある。
サンプル・テキストファイル (d:\test.txt)
いちろう やまだ じろう すずき たろう やまだ しろう やまおか ごろう やまもと
using System.IO; foreach (var line in File.ReadLines(@"d:\test.txt", Encoding.GetEncoding("Shift_JIS")).Where(line => line.Contains("やまだ"))) { Console.WriteLine(line); } // 出力 // いちろう やまだ // たろう やまだエンコードは注意。