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()

1 comentario:

orihso dijo...

estoy iniciando en powershell , el ejemplo de foreach me gusto
de que manera con el foreach aparte de leer el archivo linea por linea ejecutar un ping linea por linea con el foreach
me podrias ayudar ¡?


felcidades por la explicacion