首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >File.ReadLines()和File.ReadAllLines()有什么区别?

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

Stack Overflow用户
提问于 2014-02-23 22:58:58
回答 3查看 56.4K关注 0票数 56

我对File.ReadLines()和File.ReadAllLines()有疑问,.what是它们之间的区别。我有一个文本文件,其中包含按行排列的数据。File.ReadAllLines()返回数组,使用File.ReadLines().ToArray();,我也可以得到相同的result.So吗?这些方法有什么性能差异吗?

代码语言:javascript
复制
string[] lines = File.ReadLines("C:\\mytxt.txt").ToArray();

代码语言:javascript
复制
string[] lines = File.ReadAllLines("C:\\mytxt.txt");
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-23 23:13:05

这些方法有没有性能上的差异?

是的,是有区别的

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

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

来自MSDN

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

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

示例1:File.ReadAllLines()

代码语言:javascript
复制
string[] lines = File.ReadAllLines("C:\\mytxt.txt");

示例2:File.ReadLines()

代码语言:javascript
复制
foreach (var line in File.ReadLines("C:\\mytxt.txt"))
{

   //Do something     

}
票数 77
EN

Stack Overflow用户

发布于 2014-02-23 23:06:02

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

票数 5
EN

Stack Overflow用户

发布于 2014-02-23 23:08:09

ReadAllLines

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

如果你有小文件或者必须一次处理整个文件,那么使用它,因为它完全读取文件,这意味着整个文件在你的内存中,在大文件的情况下,它可能会降低性能。

ReadLines

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

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

MSDN中声明的备注

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

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

Here is more details and comparison demo available

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21969851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档