使用StreamReader.ReadLine()读取特定的行号,而不读取整个文件

时间:2015-03-06 00:47:52

标签: c# streamreader

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

感谢。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

感谢所有回复。这样就可以了。

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

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

相关问题