[.Net 4] 讀文字檔新利器 File.ReadLines

之前有寫過一篇「找出純文字檔裡的關鍵字」,那時用的是StreamReader的方式,逐行去判斷,但在.Net 4.0,就不用這麼做了,在System.IO.File,多了一個ReadLines這個新利器.

之前有寫過一篇「找出純文字檔裡的關鍵字」,那時用的是StreamReader的方式,逐行去判斷,但在.Net 4.0,就不用這麼做了,在System.IO.File,多了一個ReadLines這個新利器.

可以看見的,IEnumerable的應用愈來愈多了,這次新增的File.ReadLines就是,在過去如果要找出文字檔中是否包含那關鍵字,不是全部讀進來,再去判斷,或是逐行讀取,一邊讀,一邊判斷,而File.ReadLines回傳的是IEnumerable,就不用那麼麻煩了.

 


	var Fi = from line in File.ReadLines(openFileDialog1.FileName,Encoding.Default)
             where line.ToLower().Contains("jeff-yeh")
             select new
             {
                 Line = line
             };

StringBuilder sb = new StringBuilder();

 foreach (var f in Fi)
{
     sb.AppendFormat("Line {0}\r\n",f.Line);
}

if (sb.Length == 0) sb.Append("Not Found");

MessageBox.Show(sb.ToString());

1~6行,就可以找出檔案中,包含jeff-yeh這個字的文字行.

10~13行只是把找到的結果放到StringBuilder做顯示,所以不是什麼重點.

 

測試一個文字檔,每行都是GUID,總共1百萬行,找的那個GUID是最後一行,在我這台CPU 3G HT的環境下,只花了0.001874秒.

效能果然是優啊~

 

參考 :

MSDN File.ReadLines 方法 (String)