是 File.ReadLines 缓冲读取行

本文关键字:读取 缓冲 ReadLines File | 更新日期: 2023-09-27 18:33:45

我有一个很长的文本文件(大约600MB的文本),我想逐行解析。我可以简单地使用StreamReader.ReadLine()方法,但我想知道将 LINQ 与 File.ReadLines(filepath)一起使用是否会占用大量内存,或者可能在行被"读取"到单独的字符串变量后将其从内存中删除。

换句话说,当我浏览文件时,File.ReadLines()将在内存中构建整个字符串数组,或者它的工作方式是否类似于使用相同数量的内存(即单行)的StreamReader.ReadLine()

是 File.ReadLines 缓冲读取行

File.ReadLines实际上是围绕StreamReader.ReadLine()的包装器,每次迭代都会调用一次。它不执行任何自己的缓冲,但StreamReader会缓冲少量以提高性能。

来自 MSDN:

ReadLines 和 ReadAllLines 方法的区别如下: 当您使用 ReadLines,您可以在之前开始枚举字符串的集合 返回整个集合;当您使用全部读取行时,您必须 等待返回整个字符串数组,然后才能访问 数组。因此,当您处理非常大的文件时, ReadLines可以更有效率。

所以看起来ReadLines一次读一行。