2011-08-10 63 views
1

我需要閱讀在一個控制檯應用程序一個950MB的txt文件沒有得到一個System.OutOfMemoryException,結構如下:我怎樣才能讀取C#950MB TXT文件

"6152902100000017";20110701;20110701;53;"D";30359130;"NOTA DE DEBITO";"DEB.COMPRA BCO";0;;0;"6152902100000017";0;0;0;0;0;"902" 

我可以讀取文件較小,但例外的是拋在更大的文件上。 有什麼建議嗎?

+4

你實際上並不需要一次全部記憶嗎?你應該在第 – jadarnel27

+2

部分處理它,你想要用這個文件做什麼?你一次只訪問一行嗎?或者你是否需要立即在內存中運行?請顯示一些信息來源... – Yahia

回答

4

下面將幾乎總是失敗,950MB在2個字節/ char是太接近2GB限制:

string AllText = File.ReadAllText(fileName); 

讀它作爲串的陣列可能會工作(尤指64位系統)如果你有4 + GB:

string[] AllLines = File.ReadAllLines(fileName); 

但最好的方法是對其進行處理1號線在時間:

// requires Fx4 
foreach(string line in File.GetLines(fileName)) 
{ 
    // use 'line' 
} 
+0

感謝您回答它的作品很棒 – wsoza

+0

剛出於好奇,哪一個? –

5

不要將整個文件讀入緩衝區。只需按照需要一次讀取多個字節。

3

如果您使用StreamReader使用ReadLine()或ReadBlock()來獲取文件的一部分。

2

對於這種情況,您可以使用StreamReader並從源讀取一行,而不是將整個文件放入緩衝區。