我需要在读取之前检查一行是否包含字符串,我想使用类似于此的while循环来执行此操作
while(reader.ReadLine() != null)
{
array[i] = reader.ReadLine();
}
这显然不起作用,所以我该如何做这个选择呢?
答案 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.aspx和http://msdn.microsoft.com/en-us/library/system.io.streamreader.peek.aspx
答案 3 :(得分:0)
while (!reader.EndOfStream)
{
array[i] = reader.ReadLine();
}