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

读取文件行的实现选择-c#,c#,C#,文件的最大容量可能是1GB 我发现了这两个字 及 哪一个在效率方面更好-内存/cpu 另外,我在哪里可以阅读到流阅读器在引擎盖下实现了什么??两者都没有-如果您使用的是.NET 4,请使用 如果您使用的是.NET 3.5或更早版本,您可以自己编写,这比VB页面显示的更容易,因为VB还没有迭代器块(它将在下一个版本中使用迭代器块,并且比C更灵活): 一次内存中的内存不会超过一行左右(缓冲区的大小),而且CPU效率也相当高 所有这些都将在引擎盖下使用StreamReader,这是正确的,因为它是

文件的最大容量可能是1GB

我发现了这两个字

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


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

两者都没有-如果您使用的是.NET 4,请使用

如果您使用的是.NET 3.5或更早版本,您可以自己编写,这比VB页面显示的更容易,因为VB还没有迭代器块(它将在下一个版本中使用迭代器块,并且比C更灵活):

一次内存中的内存不会超过一行左右(缓冲区的大小),而且CPU效率也相当高


所有这些都将在引擎盖下使用
StreamReader
,这是正确的,因为它是将二进制数据流转换为
TextReader
的标准方式。基本上,它从
流中读取二进制数据
,并在请求时使用
编码
将该数据转换为文本。您还需要知道什么呢?

两者都不需要-如果您使用的是.NET 4,请使用

如果您使用的是.NET 3.5或更早版本,您可以自己编写,这比VB页面显示的更容易,因为VB还没有迭代器块(它将在下一个版本中使用迭代器块,并且比C更灵活):

一次内存中的内存不会超过一行左右(缓冲区的大小),而且CPU效率也相当高


所有这些都将在引擎盖下使用
StreamReader
,这是正确的,因为它是将二进制数据流转换为
TextReader
的标准方式。基本上,它从
流中读取二进制数据
,并在请求时使用
编码
将该数据转换为文本。你还需要知道什么?

如果他们都在幕后使用streamreader,那么MSDN关于使用streamreader而不是使用使用streamreader的实现的文章不是最好的方法吗?两者都不使用背后的理由是什么?(特别是,“在效率方面-内存/cpu”。@pst:为什么要编写已经作为框架一部分为您编写的代码?是什么让你觉得其他两个选项比
File.ReadLines
更有效?@iciw:不清楚你指的是哪一篇MSDN文章,但获得
IEnumerable
的好处在于它将负责“逐行读取文件”(完全可重用)的代码分离开来从想要使用这些行的代码(可能更具体)来看。@Jon Skeet:我的意思是这篇文章如果他们都在幕后使用stream reader,那么使用streamreader而不是使用使用streamreader的实现的MSDN文章不是最好的方法吗?在“两者都不是”的背后有什么理由?(特别是,“在效率方面-内存/cpu”。@pst:为什么要编写已经作为框架一部分为您编写的代码?是什么让你觉得其他两个选项比
File.ReadLines
更有效?@iciw:不清楚你指的是哪一篇MSDN文章,但获得
IEnumerable
的好处在于它将负责“逐行读取文件”(完全可重用)的代码分离开来从想要使用这些行的代码中(可能更具体)。@Jon Skeet:我是指这篇文章
// 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;
        }
    }
}
foreach (string line in ReadLines("file.txt"))
{
    // Use a line at a time
}