File.ReadLines()和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"); 

这些方法有什么性能差异吗?

是的,有区别

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

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

来自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 } 

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

ReadAllLines

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

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

readlines方法

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

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

MSDN中的备注:

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

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

这里有更多细节和比较演示