Jeśli do przetworzenia jest dużo danych tekstowych i trzeba je np przefiltrować (coś w stylu polecenia grep). W takim przypadku przetwarzanie pliku przez Import-CSV albo Get-Content może być nieoptymalne, wolelibyśmy przetwarzać plik linia po linijce i … z pomocą mogą przyjść metody .NET
Poniższy przykład pochodzi z Reading And Writing To Files · Powerstart to Powershell reference book (dewin.me)
$path = "c:\d\myfile.txt"
$stream = [System.IO.StreamReader]::new($path)
while( -not $stream.EndOfStream) {
$value = [int]($stream.ReadLine())
if (($value%10000) -eq 0) {
write-host $value
}
}
$stream.close()
Korzystając z klasy System.IO.StreamReader otwieramy plik, następnie przetwarzamy go aż do osiągnięcia końca pliku (while not end of stream) i przy każdym wykonaniu pobieramy jedną linijkę tekstu przez ReadLine(). Jeśli trzeba by było pobierać więcej danych w każdym kroku – można to zmienić.
Plik jest fizycznie odczytywany linia po linii z dysku, więc użycie pamięci przez program będzie zoptymalizowane.