【问题标题】:Is File.ReadLines buffering read lines?File.ReadLines 是否缓冲读取行?
【发布时间】:2016-02-07 19:42:58
【问题描述】:

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

换句话说,File.ReadLines() 将在内存中构建整个字符串数组,因为我将遍历文件,或者它是否会使用相同数量的内存(即单行)类似于StreamReader.ReadLine()

【问题讨论】:

    标签: c#


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      来自 MSDN:

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

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

      【讨论】:

        猜你喜欢
        • 2014-09-04
        • 1970-01-01
        • 2021-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多