一尘不染

File.ReadLines()和File.ReadAllLines()有什么区别?[重复]

c#

这个问题已经在这里有了答案

File.ReadAllLines()和File.ReadAllText()有什么区别? (3个答案)

逐行读取文本文件的最快方法是什么? (8个答案)

6年前关闭。

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

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

要么

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

阅读 329

收藏
2020-05-19

共1个答案

一尘不染

这些方法是否有性能差异?

是的, 有区别

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

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

}
2020-05-19