新文章

2012年1月13日 星期五

[C#]讀取文字檔新方法 IN .NET Framework 4

讀取文字檔是常見的 coding 技巧,一般常見的方法如下



程式碼範例 (一)
string[] lines_A = File.ReadAllLines("C:\\test.txt");
foreach (var line in lines_A)
{
      Console.WriteLine("字串長度={0}, 內容={1}", line.Length, line);
}

程式碼範例 (二)
using (TextReader reader = new StreamReader("C:\\test.txt"))
{
    string line;
    while ((line = reader.ReadLine()) != null)
    {
      Console.WriteLine("字串長度={0}, 內容={1}", line.Length, line);
    }
    Console.ReadLine();
}

但是在 .NET Framework 4 之後 有更方便的函數可以使用!
參考如下:

程式碼範例 (三)
IEnumerable < string > lines_B = File.ReadLines("C:\\test.txt");
foreach (var line in lines_B)
{
   Console.WriteLine("字串長度={0}, 內容={1}", line.Length, line);
}

點評

程式碼(一) 是常見的使用方法之一,而該方法中使用到的是 File 類別物件的 ReadAllLines 方法 及 一個 string 陣列,但是讀取一個大的檔案時,使用到 ReadAllLines 方法一次就把文字檔的所有內容讀出時,將耗用到非常多的記憶體。

程式碼(二) ,運用到 TextReader 類別物件,並使用該類別物件 ( TextReader )的 ReadLines 方法,借由一次讀取一行的方式來改善其效能,雖然是改善了卻無法很輕易的使用 File.ReadAllLines 方法。


.NET Framework 4 出現後,File 類別出現了 ReadLines 方法,另外,該方法可搭配使用 IEnumerable<T> ,所以從 程式碼(三) 就可以易知的是:
(1.)  不用再使用 string[] 陣列  
(2.) 效能上也有相對性的改善  
(3.) 使用習慣,撰寫程式碼的方法 (直覺性) 不變也更容易。
(4.) 有使用到 IEnumerable <T>


沒有留言:

張貼留言