检查StreamReader是否可以读取另一行

时间:2012-12-04 14:31:22

标签: c# .net streamreader

我需要在读取之前检查一行是否包含字符串,我想使用类似于此的while循环来执行此操作

    while(reader.ReadLine() != null)
    {
        array[i] = reader.ReadLine();
    }

这显然不起作用,所以我该如何做这个选择呢?

4 个答案:

答案 0 :(得分:5)

String row;
while((row=reader.ReadLine())!=null){
    array[i]=row;
}

应该工作。

答案 1 :(得分:5)

StreamReader.ReadLine从当前流中读取一行字符,读者在底层Stream对象中的位置也按方法能够读取的字符数提前。因此,如果您第二次调用此方法,则将从基础流中读取下一行。解决方案很简单 - 将行保存到局部变量。

string line;
while((line = reader.ReadLine()) != null)
{
   array[i] = line;
}

答案 2 :(得分:4)

尝试使用Peek方法:

while (reader.Peek() >= 0)
{
    array[i] = reader.ReadLine();
}

文档:http://msdn.microsoft.com/en-us/library/system.io.streamreader.readline.aspxhttp://msdn.microsoft.com/en-us/library/system.io.streamreader.peek.aspx

答案 3 :(得分:0)

while (!reader.EndOfStream)
{
    array[i] = reader.ReadLine();
}