【问题标题】:Reading Range of Lines from a File从文件中读取行的范围
【发布时间】:2014-10-06 06:07:47
【问题描述】:

谁能告诉我在 5 GB 大小的文件中显示行范围的最快方法。例如:如果文件的大小为 5GB,并且具有行号,则文件中的列之一。假设文件中的行数为 100 万,我有 Start Index Line # 和 End Index Line #。假设我想读取大文件的第 25 行到第 89 行,而不是读取每一行,有没有最快的方法可以读取从第 25 到第 89 的特定行,而无需从 C# 开始读取整个文件

【问题讨论】:

  • 为什么会有行号?您是否需要列 行号 还是可以计算每一行?

标签: c# c#-4.0


【解决方案1】:

简而言之,不。在实际阅读之前,您怎么可能知道回车符/行号在哪里?

为避免内存问题,您可以:

File.ReadLines(path)
    .SkipWhile(line=>someCondition)
    .TakeWhile(line=>someOtherCondition)

5GB 是在不建立某种索引的情况下筛选的海量数据。我认为您偶然发现了将数据加载到数据库中并添加适当的索引可能最适合您的情况。

【讨论】:

  • OP 有一列 line number 应该被使用。
  • @TimSchmelter ...嗯,这只会使问题更加复杂,对吧?
  • 如果我们从内存文件流中读取行号,我们可以决定寻找特定的行。有意义吗
猜你喜欢
  • 1970-01-01
  • 2020-09-25
  • 2012-06-24
  • 2016-10-10
  • 1970-01-01
  • 2018-07-23
  • 1970-01-01
  • 2018-06-28
  • 2023-03-03
相关资源
最近更新 更多