Abrir y guardar ARCHIVOS BINARIOS
En la clase del lunes hemos trabajado con las funciones de registro para controlar los archivos. El otro día ya habíamos planteado trabajar con ARCHIVOS BINARIOS. Este link de Microsoft puede ser ilustrativo: http://msdn.microsoft.com/es-es/library/9tk3bdxw.aspx
1. Primeramente, aprendemos a cargar (abrir) archivos con FileSystem. En este caso, abriremos una imagen:
Dim bytes = My.Computer.FileSystem.ReadAllBytes(My.Computer.FileSystem.SpecialDirectories.MyPictures + "\Tulips.jpg")
'Ahora indicamos al PictureBox que cargue esos bytes desde la memoria con IO.MemoryStream: es un flujo de memoria.
pbImagen.Image = Image.FromStream(New IO.MemoryStream(bytes))
Así de sencillo. Si empleamos ReadAllText podríamos abrir cualquier archivo de texto. Ene se caso hay que indicarle la codificación de propio texto:
My.Computer.FileSystem.ReadAllText("C:\ARCHIVOS\Contenido.txt", System.Text.Encoding.Default)
El otro método es con System.IO. El otro día vimos cómo hacerlo (con Imports; en este ejemplo vamos a direccionarlo):
Dim Archivo As New System.IO.StreamReader("C:\ARCHIVOS\Contenido.txt", System.Text.Encoding.Default)
'Esto es un ejemplo de lectura de una sola vez. Con ReadToEnd lee todo hasta <eOF> (el final).
Dim Contenido As String = Archivo.ReadToEnd()
'Lo mostramos.
tbTexto.Text = Contenido
Archivo.Close() ' Se cierra el flujo.
Archivo.Dispose() 'Se libera la memoria.
Como caso particular, podemos hacer un ejemplo de lectura por líneas de texto. Sería como antes, en lugar del ReadToEnd:
Do While Archivo.EndOfStream <> True
'Añade una línea del archivo a tbTexto. Ojo: Readline() no incorpora el final de línea.
tbTexto.Text = tbTexto.Text + Archivo.ReadLine() + vbCrLf
Loop
Leyendo por caracteres sería así, sustiyendo esto en el anterior:
tbTexto.Text = tbTexto.Text + Chr(Archivo.Read())
2. Para guardar archivos binarios… Muy sencillo también. Veamos este ejemplo de guardar un Array de 6 items.
Dim Datos() As Byte = {10, 20, 30, 40, 50, 60} My.Computer.FileSystem.WriteAllBytes("C:\ARCHIVOS\Datos.dat", Datos, False)
'NOTA: con bytes funciona siempre. Si hay problemas, mal asunto.