我一直在使用Streamreader(和StreamWriter)来处理PowerShell脚本,以将大文件解析成较小的报告。在寻找将其组合在一起的最佳方法时,我发现有两种方法主要用于读取内容到文件末尾。
1-while ($reader.Peek() -ge 0) { $line = $reader.Readline() ... }
2-while (($line = $read.ReadLine()) -ne $null) { do stuff ... }
从文档看,Peek似乎将读取下一个值,但不会更改读取器的位置。看起来ReadLine基本上会执行相同的操作,但会读取整个字符串/行。我觉得这是一个“禁止”问题-在读取行之前偷看一个值真的更有效,还是在将读者分配给变量之前只是一个额外的步骤?
谢谢您!
由于仍然需要线条,我认为Peek()
没有理由。如果您真的想检查自己是否结束,那么.EndOfStream
property可能会更准确。
.EndOfStream
,As discussed here也会在发生错误时返回.Peek()
,而不仅仅是到达流的末尾。那里的大多数答案还建议您避免使用它,而只需使用-1
。
也使用您的#2示例,您可以省略.ReadLine()
检查,因为它是隐式的:
$null