文件之间的区别是什么.ReadLines()和File.是否读取所有行()



我有关于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<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     
}

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

ReadAllLines

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

如果您有小文件或必须同时处理整个文件,则在它完全读取文件时使用它,这意味着整个文件都在您的内存中。如果是大文件,则可能会降低性能。

ReadLines

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

如果您需要分块处理文件(而不是一次处理整个文件),这很有用。

MSDN中的备注:

ReadLines和ReadAllLines方法的区别如下:

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

以下是可用的更多详细信息和比较演示

相关内容

  • 没有找到相关文章

最新更新