Estimados Amigos,

A lo largo de las versiones de Visual Studio, se fue perfeccionando el tema de Lectura y Escritura de Archivos, con colecciones de clases muy bien pensadas, y que nos permiten un código simplificado, y muy claro para su comprensión.

A diferencia de lo que sucedia con Visual Basic 6.0, donde para leer un archivo de texto completo, debiamos escribri no menos de 10 instrucciones o lineas de código, ahora es posible leer todo un extenso archivo de texto y volcarlo en un Control (por Ej. TextBox) con 1 sola linea de código.

LEER TODO UN ARCHIVO COMPLETO

Código:
txtArchivo.Text = My.Computer.FileSystem.ReadAllText("C:\EjemploBlog2.log")
Este ejemplo, lee todo el contenido de un archivo LOG y lo vuelca en un TextBox llamado 'txtArchivo'

Pero que sucedería si queremos leer Linea x Linea el mismo archivo ?

Veamos el ejemplo siguiente

LEER LINEA x LINEA DE UN ARCHIVO

Código:
    Private Sub BotonxLinea_Click(sender As Object, e As EventArgs) Handles BotonxLinea.Click
        Dim Archivo As IO.StreamReader

        Archivo = IO.File.OpenText("c:\EjemploBlog2.log")
        Do Until Archivo.EndOfStream
            txtArchivo.Text = Archivo.ReadLine()
            MessageBox.Show("Leer otra Linea")
        Loop
        Archivo.Close()
    End Sub
En este caso, debemos crear un objeto de tipo STREAMREADER , lo llenaremos con el OPENTEXT que es un método que ya trae Encapsulada las instrucciones necesarias para abrir y leer un archivo de tipo Texto.

Nota : El archivo a leer NO NECESARIAMENTE debe contener la extensión TXT, sino que debe ser cualquier archivo de cualquier extensión, cuyo contenido sea TEXTO y no Binario.
el "Do Until Archivo.EndOfStream" nos permite leer Linea x Linea hasta que el Fin de Archivo sea encontrado.

Le sigue la instrucción "ReadLine" que solo lee la linea siguiente... si en lugar de ReadLine usaramos solo Read, el resultado seria la lectura completa del archivo.


GRABAR TEXTO EN UN ARCHIVO

Para Grabar datos, se usa la misma estructura de código pero cambiando el comando ReadLine por WriteLine y reemplazando el StreamReader por StreamWriter

Código:
    Private Sub BotonxLinea_Click(sender As Object, e As EventArgs) Handles BotonxLinea.Click
           Dim Archivo As IO.StreamWriter
           Archivo = New IO.StreamWriter("c:\EjemploBlog2W.log")
           For i As Integer = 1 To 100
                    Archivo.WriteLine("Linea Nro. " + i.ToString)
           Next
           Archivo.Close()
           txtArchivo.Text = My.Computer.FileSystem.ReadAllText("c:\EjemploBlog2W.log")
    End Sub
En este ejemplo, creamos un archivo de tipo StreamWriter y le grabamos 100 lineas de texto.. luego de cerrado el archivo de escritura, lo leemos completo y volcamos su contenido al TextBox


DIFERENCIAS ENTRE WRITE y WRITELINE

WRITELINE permite grabar lineas, y automáticamente al texto que grabamos, se le incorpora el <CR> <LF> sin que debamos incluirlo.
WRITE permite grabar texto, concatenándolo al final de lo último grabado, sin incluir <CR><LF>


Espero que esta nota les haya aclarado el panorama.

Pueden compartirla libremente o comentar en ella e iremos contestando sin problemas.

Saludos Cordiales


Pablo Tilotta