在c#中逐行读取大文件

时间:2015-11-04 06:59:43

标签: c# file-read

我在c#中有大量文件(超过300 MB)。我需要通过高效的方式逐行读取文件,因为一旦我尝试读取它, 超过30分钟,而目标时间约为3分钟 。我尝试了File.ReadAllBytes,它成功且非常快速地读取文件并将其加载到字符串中。但在那之后,逐行处理字符串需要很长时间。是否有更好的方法或更快的方法。

提前感谢。

1 个答案:

答案 0 :(得分:11)

您可以使用File.ReadLines,它将通过文件行进行枚举:

var lines = File.ReadLines(path);

foreach(var line in lines)
{
    // do your logic here
}

它不会在第一行加载文件。它将在循环lines时加载它,因此读取更大的文件比一次加载更好。

MSDN在File.ReadLines

的说明中说
  

备注ReadLines和ReadAllLines方法的不同之处如下:何时   使用ReadLines,您可以开始枚举字符串集合   在整个收藏品归还之前;当您使用ReadAllLines时,   你必须等待返回整个字符串数组   可以访问该阵列。因此,当你工作非常大   文件,ReadLines可以更有效。