读取文件行的实现选择- c#

本文关键字:选择 实现 文件 读取 | 更新日期: 2023-09-27 18:05:15

文件最大可达1GB

遇到了这两个read

IEnumerable

如何从文件中读取文本

哪一个在效率方面更好-内存/cpu

另外,我在哪里可以读到流阅读器在引擎盖下实现了什么??

读取文件行的实现选择- c#

都不是-如果你使用。net 4,使用File.ReadLines

如果你使用的是。net 3.5或更早的版本,你可以自己编写这段代码,比VB页面显示的要容易得多,因为VB还没有迭代器块(它将在下一个版本中以比c#更灵活的方式获得它们):

// Optional: create an overload of this taking an encoding
public IEnumerable<string> ReadLines(string file)
{
    using (TextReader reader = File.OpenText(file))
    {
        string line;
        while ((line = reader.ReadLine()) != null)
        {
            yield return line;
        }
    }
}

这是有效的 File.ReadLines为您做的。

那么你可以使用:

foreach (string line in ReadLines("file.txt"))
{
    // Use a line at a time
}

一次在内存中不超过一行左右(缓冲区的大小),并且它也将是合理的cpu效率。

所有都将使用StreamReader,这是正确和适当的,因为它是将二进制数据流转换为TextReader的规范方式。基本上,它从Stream读取二进制数据,并在请求时使用Encoding将该数据转换为文本。你还想知道什么?