从文件中读取多个文本行作为流

时间:2014-08-18 20:30:05

标签: .net powershell scripting

我需要在powershell中读取和处理非常大的文本文件,我可以使用以下模式来完成。然而,逐行阅读对我来说似乎效率低下。

$reader = [System.IO.File]::OpenText($file)
while(!$reader.EndOfStream){
 $line = $reader.ReadLine()
 ###Do something
}

所以不是逐行阅读,是否可以从某种流对象中一次读取多行?

2 个答案:

答案 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一次阅读所有内容。 一切都取决于你想要解析的东西。