首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenText对ReadLines

OpenText对ReadLines
EN

Stack Overflow用户
提问于 2016-01-21 05:46:27
回答 2查看 1K关注 0票数 4

我看到了一个逐行读取文件的实现,如下所示:

代码语言:javascript
复制
using (StreamReader reader = File.OpenText(path))
while (!reader.EndOfStream)
{
    string line = reader.ReadLine();
}

不过,就我个人而言,我会这样做:

代码语言:javascript
复制
foreach (string line in File.ReadLines(path))
{

}

有什么理由选一个而不是另一个呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-21 05:49:52

客观:

  • 第一种方法是一个接一个地选择行,然后在流数据时进行处理。
  • 第二种方法一次生成IEnumerable<string>,然后就可以开始处理行(来源MSDN )。

Usefulness?:

  • 第一个是在这个意义上更“流动”。因为您可以随意选择接受/处理和中断/继续。每次你需要一条线,你拿一条,你处理它,然后你选择中断或继续。您甚至可以选择不进行任何进一步的行(假设您在yield循环中有while ),直到您想要随意返回为止。
  • 第二个将得到IEnumerable<string> (也就是说,在处理之前指定预期数据的信息),因此一开始会稍微增加一些开销。但是需要注意的是,这种开销相对较小,因为IEnumerable推迟了实际的执行,这与List不同。一些好消息朗读

在MSDN中,下面是ReadLines的用例

对文件执行查询,以获得其行的筛选集。 使用File.WriteAllLines(String, IEnumerable)方法将返回的行集合写入文件,或将它们添加到现有文件中 File.AppendAllLines(String, IEnumerable)方法。创建一个立即填充的集合实例,该集合将字符串的IEnumerable集合作为其构造函数(如IList或队列)。

票数 5
EN

Stack Overflow用户

发布于 2016-01-21 05:53:08

方法1

比方法2更冗长,所以有更多的事情会被堵塞。

方法2

更简洁,更直接地封装意图-更容易阅读和遵循,也更少的机会填充东西(如忘记处理阅读器等)。

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

https://stackoverflow.com/questions/34916237

复制
相关文章

相似问题

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