while ((line = sr.ReadLine()) != null && !sr.EndOfStream)
这不起作用。它实际上保持循环,我得到一个异常,因为“line”为null,并且已达到EndofStream。有什么想法吗?
答案 0 :(得分:4)
您只需使用以下内容,ReadLine将在文件结束时返回null
,因此无需检查EndOfStream
。
while ((line = streamReader.ReadLine()) != null)
{
// do stuff
}
MSDN:
返回值 键入:System.String 输入流的下一行,如果到达输入流的末尾,则为null。
答案 1 :(得分:1)
如果将两个检查放在一起,即使ReadLine()
在到达EndOfStream
之前为空,代码也会转义为循环。以下是细分版本,但将通过整个流程。
while (!sr.EndOfStream)
{
if ((line = sr.ReadLine()) != null)
{
//do your work here
}
}
答案 2 :(得分:0)
仅使用此部分
while ((line = sr.ReadLine()) != null)
{
// your code
}
答案 3 :(得分:0)
如果您想跳过空行:文本文件中的行不能为空,在这种情况下为null表示没有更多行。因此,如果您想检查一行是否为空,(line = sr.ReadLine()) != null
将无效。你可以这样做,虽然还有很多其他方法:
while ((line = sr.ReadLine()) != null)
if (!line.Trim().Equals("")) {
// Do something
}
}