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