Powershell-在Readline上使用Peek方法是否有好处(虽然不为null)?

问题描述 投票:1回答:1

我一直在使用Streamreader(和StreamWriter)来处理PowerShell脚本,以将大文件解析成较小的报告。在寻找将其组合在一起的最佳方法时,我发现有两种方法主要用于读取内容到文件末尾。

1-while ($reader.Peek() -ge 0) { $line = $reader.Readline() ... }

2-while (($line = $read.ReadLine()) -ne $null) { do stuff ... }

从文档看,Peek似乎将读取下一个值,但不会更改读取器的位置。看起来ReadLine基本上会执行相同的操作,但会读取整个字符串/行。我觉得这是一个“禁止”问题-在读取行之前偷看一个值真的更有效,还是在将读者分配给变量之前只是一个额外的步骤?

谢谢您!

powershell streamreader
1个回答
0
投票

由于仍然需要线条,我认为Peek()没有理由。如果您真的想检查自己是否结束,那么.EndOfStream property可能会更准确。

.EndOfStreamAs discussed here也会在发生错误时返回.Peek(),而不仅仅是到达流的末尾。那里的大多数答案还建议您避免使用它,而只需使用-1

也使用您的#2示例,您可以省略.ReadLine()检查,因为它是隐式的:

$null
© www.soinside.com 2019 - 2024. All rights reserved.