【问题标题】:Using StreamReader.ReadLine() to read a specific line number w/o reading entire file使用 StreamReader.ReadLine() 读取特定行号而不读取整个文件
【发布时间】:2015-03-06 00:47:52
【问题描述】:

我在 C# 中使用 StreamReader.ReadLine() 来读取文本文件以查找“Step-xx”等特定内容,然后读取并使用指向下一次出现“Step-xx+”的内容1"。我知道“Step-xx”行的出现在我的文本文件中相隔 100 行。如何跳转到第 2500 行并阅读“Step-25”之后的内容,而不是阅读 2500 行并将其与我现在正在做的“Step-25”进行比较。我需要加快搜索速度。

谢谢。

【问题讨论】:

标签: c# streamreader


【解决方案1】:

文件不是基于行的(甚至不是基于字符的),因此您不能跳到文件中的特定行。

如果您确实需要在文件中向前跳过,则需要根据平均行长度猜测第 2500 行可能从哪里开始,寻找该位置并开始阅读。您需要直接使用FileStream,而不是StreamReader,并将文件作为字节读取。您将寻找在 Windows 文本文件中用作换行符的 0x0d 0x0a 字节组合。当两个换行符之间有字节时,可以将它们解码为字符串并查找 Step-xx 标记。

【讨论】:

    【解决方案2】:

    感谢所有回复。这会成功的。

    string line = File.ReadLines(FileName).Skip(14).Take(1).First();

    我需要弄清楚从 StreamReader 更改为 ReadLines 会如何影响其他事情。 再次感谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-12
      • 1970-01-01
      • 1970-01-01
      • 2014-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多