我需要在powershell中读取和处理非常大的文本文件,我可以使用以下模式来完成。然而,逐行阅读对我来说似乎效率低下。
$reader = [System.IO.File]::OpenText($file)
while(!$reader.EndOfStream){
$line = $reader.ReadLine()
###Do something
}
所以不是逐行阅读,是否可以从某种流对象中一次读取多行?
答案 0 :(得分:3)
为什么不使用内置命令:
Get-Content $file -ReadCount 1024 | Foreach {$_} | Where {$_ -match 'pattern'}
一次读取1024行。通过Foreach命令运行这些操作,将1024行的数组展平为单行进行处理 - 在这种情况下,基于正则表达式模式进行过滤。
答案 1 :(得分:0)
您已经使用流阅读器从"某种流对象"中读取。 这取决于你想做什么。如果你想逐行处理事物(例如,如果你想查看一行是否包含某个单词),那么你正在做的事情几乎是正确的。 您可以使用StreamReader.Read方法一次读取更多数据: http://msdn.microsoft.com/en-us/library/9kstw824(v=vs.110).aspx 您也可以使用ReadAll一次阅读所有内容。 一切都取决于你想要解析的东西。