我可以在C#中读取950MB的txt文件

时间:2011-08-10 18:39:24

标签: c# file text-files

我需要在控制台应用中读取950mb txt文件,而不会获得System.OutOfMemoryException,具有以下结构:

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

我可以读取较小的文件,但是更大的文件会抛出异常。 有什么建议吗?

4 个答案:

答案 0 :(得分:5)

不要将整个文件读入缓冲区。只需要根据需要一次读取多个字节。

答案 1 :(得分:3)

如果你使用StreamReader使用ReadLine()或ReadBlock()来获取文件的一部分。

答案 2 :(得分:3)

以下几乎总会失败,2字节/字符处的950MB太接近2GB限制:

string AllText = File.ReadAllText(fileName);  

如果你有4+ GB,那么将它读作一个字符串数组可能会起作用(特别是在64位系统上):

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

但最好的办法是一次处理1行:

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

答案 3 :(得分:2)

您可以在这种情况下使用StreamReader并从源中一次读取一行,而不是将整个文件放入缓冲区。