File.ReadLines()和File.ReadAllLines()之间有什么区别?

时间:2014-02-23 14:58:58

标签: c# readline file.readalllines

我有关于File.ReadLines()和File.ReadAllLines()的查询。有什么区别 他们。我有文本文件,其中包含行数据。File.ReadAllLines()返回数组并使用File.ReadLines().ToArray();我也可以获得相同的结果。那么这些方法是否有任何性能差异?

string[] lines = File.ReadLines("C:\\mytxt.txt").ToArray();

或者

string[] lines = File.ReadAllLines("C:\\mytxt.txt");

3 个答案:

答案 0 :(得分:61)

  

与这些方法有任何性能差异吗?

存在差异

File.ReadAllLines()方法一次读取整个文件并返回字符串[]数组,因此在处理大量文件时需要花费时间,因为用户必须等待直到返回整个数组,所以不建议这样做。

File.ReadLines()返回一个IEnumerable<string>并且它不会一次性读取整个文件,因此在处理大型文件时它确实是一个更好的选择。

来自MSDN

  

ReadLines和ReadAllLines方法的不同之处如下:

     

使用ReadLines时,可以先开始枚举字符串集合   整个系列归还;当你使用ReadAllLines时,你必须   在您可以访问之前等待返回整个字符串数组   数组。因此,当您使用非常大的文件时,   ReadLines可以更有效率。

示例1:File.ReadAllLines()

string[] lines = File.ReadAllLines("C:\\mytxt.txt");

示例2:File.ReadLines()

foreach (var line in File.ReadLines("C:\\mytxt.txt"))
{

   //Do something     

}

答案 1 :(得分:2)

File.ReadLines方法返回IEnumerable<string>。但是File.ReadAllLines会返回string[] 如果您阅读大文件,最好使用File.ReadLines方法。因为它从文件中逐行读取,而不是将所有文件读入string[],这会占用大量内存。 MSDN

答案 2 :(得分:1)

ReadAllLines

  

打开文本文件,读取文件的所有行,然后关闭文件。

如果您有小文件或必须立即处理完整文件,请使用此文件,因为它完全读取文件,这意味着整个文件都在您的内存中。如果文件较大,可能会降低性能。

ReadLines

  

使用File.ReadLines方法,您可以在返回整个集合之前开始枚举字符串集合。

如果您需要以块(而不是整个文件)处理文件,这将非常有用。

MSDN中所述的备注:

  

ReadLines和ReadAllLines方法的不同之处如下:

     

使用ReadLines时,可以在返回整个集合之前开始枚举字符串集合;当您使用ReadAllLines时,必须等待返回整个字符串数组才能访问该数组。因此,当您使用非常大的文件时,ReadLines可以更有效。

Here is more details and comparison demo available