La clase StreamWriter

La clase StreamWriter

Un objeto StreamWriter realiza operaciones de escritura de texto sobre un archivo. El proceso típico de escritura de datos mediante un StreamWriter, comprende los siguientes pasos:

• Instanciar un objeto de esta clase mediante alguno de los constructores disponibles. Aquí creamos un nuevo archivo para escribir datos sobre él, o abrimos uno existente.

• Escritura de texto mediante los métodos WriteLine( ) y Write( ). El primero escribe el texto pasado como parámetro, y añade los caracteres especiales de retorno de carro y nueva

línea. El segundo escribe el texto pasado y deja el puntero de escritura a partir del último carácter escrito, con lo que no produce un cambio automático de línea. Deberemos utilizar la propiedad NewLine para introducir manualmente un salto de línea.

• Cierre del Stream con el método Close( ). Esta acción vuelca el contenido del búfer del objeto en el archivo.

© Grupo EIDOS 27. Operaciones de entrada y salida (I/O). Gestión del sistema de archivos

El Código fuente 410 muestra el proceso básico que acabamos de describir.

Imports System.IO

Module Module1 Sub Main() Dim swEscritor As StreamWriter ' creamos un stream de escritura, y al mismo tiempo un ' nuevo archivo para escribir texto sobre él swEscritor = New StreamWriter("\pruebas\NOTAS.txt")

' escribir líneas swEscritor.WriteLine("esta es la primera línea") swEscritor.WriteLine("segunda línea de texto")

' ahora escribimos texto pero sin provocar un salto de línea swEscritor.Write("Juan y Luna ") swEscritor.Write("van de paseo") swEscritor.Write(swEscritor.NewLine) ' esto introduce el salto de línea

swEscritor.WriteLine("con esta línea cerramos")

' cerrar el stream y el archivo asociado swEscritor.Close()

End Sub End Module

Código fuente 410

Algunas de las clases de tipo Stream de escritura disponen del campo compartido Null, que permite realizar una operación de escritura que no será volcada en el medio físico de almacenamiento, con lo que se perderán los datos escritos. Ver el Código fuente 411.

' escribir a un medio inexistente (nulo) swEscritor.Null.WriteLine("este texto no llegará al archivo")

Código fuente 411

En el caso de que el archivo sobre el que vamos a escribir ya exista, podemos utilizar un constructor

de StreamWriter que nos permite especificar si vamos a añadir texto al archivo o vamos a sobrescribir, perdiendo el texto que hubiera. Veamos un ejemplo en el Código fuente 412.

' abre el archivo y se sitúa al final del texto para añadir swEscritor = New StreamWriter("\pruebas\NOTAS.txt", True)

' se elimina el contenido previo del archivo swEscritor = New StreamWriter("\pruebas\NOTAS.txt", False)

Código fuente 412

Después de crear un objeto de este tipo, y escribir algunas líneas de texto sin cerrar el Stream, si abrimos su archivo de texto correspondiente, nos encontraremos con que no hay texto dentro del archivo. Ello es debido a que todavía no se ha volcado el contenido del búfer del objeto sobre el archivo. Para forzar dicho volcado, deberemos llamar al método Flush( ), que se encarga de traspasar el búfer al archivo asociado al Stream. Veamos el Código fuente 413.

Programación con Visual Basic .NET © Grupo EIDOS

Dim swEscritor As StreamWriter ' creamos un stream de escritura swEscritor = New StreamWriter("\pruebas\NOTAS.txt", False)

' escribir líneas swEscritor.WriteLine("la primera línea") swEscritor.WriteLine("un poco más de texto")

' si abrimos el archivo antes de la siguiente, estará vacío swEscritor.Flush() ' ahora el archivo ya contendrá texto

' cerrar el stream y el archivo asociado swEscritor.Close()

Código fuente 413