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

时间:2011-08-10 21:15:49

标签: c#

max处的文件可能是1GB

遇到了这两个读物

IEnumerable

How to: Read Text from a File

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

此外,我在哪里可以阅读流阅读器实现的内容?

1 个答案:

答案 0 :(得分:5)

两者都没有 - 如果您使用的是.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

一次只有一行左右(缓冲区的大小)将在内存中,并且它也将具有合理的CPU效率。

所有这些将在引擎盖下使用foreach (string line in ReadLines("file.txt")) { // Use a line at a time } ,这是正确的,因为它是将二进制数据流转换为StreamReader的规范方式。基本上,它从TextReader读取二进制数据,并使用Stream将数据转换为文本请求时。您还需要知道什么?