如何使用streamreader获得5个前一行和5个下一行?

时间:2015-10-25 18:43:22

标签: c# streamreader

我想在当前行下面获得5行和5行。我使用Streamreader逐行读取,Regex用我的模式查找一行(当前行是正则表达式找到模式的行)。 任何建议将不胜感激。 编辑:文件重量约为15GB,因此我无法将它们存储在内存中。

1 个答案:

答案 0 :(得分:1)

为什么不存储这5行(之前/之后)?

var cache= new Queue<string>();

 using (StreamReader reader = new StreamReader("file.txt"))
    {
        cache.Enqueue(reader.ReadLine());
        if(cache.Count() > 11)
             cache.Dequeue(); // clear old stuff

        if(cache.Count() == 11) // now you have your 5 before and 5 after
            {
              var myRow = cache.ElementAt(6); // do stuff
            }
    }