recorrer un archivo de texto sin cargarlo en memoria

Para recorrer un archivo de texto, podemos hacerlo de la siguiente manera
$archivo = get-content archivo.txt
y luego para recorrerlo
foreach ($linea in $archivo){
"muestro la linea: $linea"
}


el problema, es que get-content carga el archivo entero en memoria, y si bien, el archivo ocupa pocos megas, no es problema, pero en el caso de un archivo que mide gigas (como un log), nos va a cargar el archivo entero en memoria, por lo tanto, podemos ocupar .NET para recorrerlo sin que lo cargue, de la siguiente manera:

$archivo = [System.IO.File]::OpenText("archivo.txt")

while ($archivo.peek() -ne -1){
$linea = $archivo.ReadLine()
"muestro la linea: $linea"
}
$archivo.Close()

No hay comentarios.: