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可以更高效。
这里有更多细节和比较演示