14 mayo, 2007

Leyendo y escribiendo archivos

Stream

Esta clase nos brinda una serie de métodos para trabajar con datos secuenciales, además, se especializa según los datos con los cuales vamos a trabajar en:

FileStream

MemoryStream

CriptoStream

NetworkStream

GZipStream

Empecemos con el primero, el FileStream. Como su nombre lo indica permite hacer operaciones sobre los datos contenidos en los archivos. Lo primero que necesitamos conocer es como obtener el FileStream de un archivo, esto lo hacemos mediante la clase File:

Dim Miarchivo As FileStream = File.Open("c:\prueba.log", FileMode.Open, FileAccess.Read)

Sin embargo, para facilitar la lectura del archivo podemos utilizar el StreamReader ya que el FileStream lee el archivo como un arreglo de bytes, el StreamReader permite leer el archivo como un simple string. Veamos cómo podemos hacer esto:

Sub Main()

Dim Miarchivo As FileStream = File.Open("c:\prueba.log", FileMode.Open, FileAccess.Read)

Dim Mistreamreader As New StreamReader(Miarchivo)

Console.WriteLine(Mistreamreader.ReadToEnd())

Console.ReadKey()

End Sub

Mediante el OpenText de la clase File podemos simplificar el código anterior:

Sub Main()

Dim Mistreamreader As StreamReader = File.OpenText("c:\prueba.log")

Console.WriteLine(Mistreamreader.ReadToEnd())

Console.ReadKey()

End Sub

De igual forma podemos crear un nuevo archivo:

Sub Main()

Dim Mistreamwriter As StreamWriter = File.CreateText("c:\temp\prueba.log")

Mistreamwriter.WriteLine("Primera linea")

Mistreamwriter.WriteLine("Segunda linea")

Mistreamwriter.Close()

End Sub

Es importante tomar en cuenta que el fragmento de código anterior sobre escribe el archivo.

En algunas ocasiones es necesario crear el stream en memoria de manera temporal, antes de almacenarlo, por ejemplo, en un archivo. Para estos casos se puede utilizar el memorystream, su uso es muy similar al filestream. Veamos un ejemplo:

Sub Main()

Dim Mitemp As New MemoryStream()

Dim Mistream As StreamWriter = New StreamWriter(Mitemp)

Mistream.WriteLine("Primera Linea")

Mistream.WriteLine("Segunda Linea")

Mistream.WriteLine("Tercera Linea")

Mistream.Flush()

Dim Miarchivo As FileStream = File.Create("c:\temp\prueba.txt")

Mitemp.WriteTo(Miarchivo)

Mitemp.Close()

Mistream.Close()

Miarchivo.Close()

End Sub

Cuando necesitamos manejar stream que requieran gran velocidad contamos con el streambuffered, su uso es muy similar a los anteriores por lo cual solo lo voy a citar, en futuros artículos voy a comentar sobre los otros tipos de blogs.

No hay comentarios.: