Serializar y Desearializar objetos
Un tema mportante es SERIALIZAR: se trata de convertir un objeto en flujo de bytes susceptible de ser guardados. Por tanto, DESERIALIZAR será convertir el flujo de datos en objeto de la clase.
Curiosidad: el sistema de archivo directo sólo funciona en el Visual 2010. Serializar funciona en 2008 y 2010.
Podemos ver más en: http://msdn.microsoft.com/es-es/library/aa984468(v=vs.71).aspx
Otro link interesante (un poco más detallado) es el siguiente: http://web1.taringa.net/posts/info/4250633.R/Serializacion-de-objetos-_Programacion_.html
Creamos una clase Persona en un módulo, como otras veces.
Aquí vamos a importar al principio del formulario. Vemos cómo serializar y deserializar:
Imports System.IO
Imports System.Runtime.Serialization.Formatters.Binary
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim p As New Persona("Pepe", 30)
Dim p2 As New Persona("Juan", 23)
Dim p3 As New Persona("Luis", 34)
'Crea un archivo y lo asocia a Archivo.
Dim Archivo As Stream = File.Create("C:\ARCHIVOS\Data1.dat") 'Con Create reescribirá encima del archivo.
Dim Serializador As New BinaryFormatter() 'Creamos el serializador.
'Gracias al serializador guardaremos el objeto en el archivo.
Serializador.Serialize(Archivo, p)
Serializador.Serialize(Archivo, p2)
Serializador.Serialize(Archivo, p3)
'Cerramos el flujo asociado al archivo.
Archivo.Close()
Archivo.Dispose()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'Ahora vamos a DESERIALIZAR.
'Creamos un flujo y lo asociamos a Data.dat
Dim Archivo As Stream = File.OpenRead("C:\ARCHIVOS\Data1.dat") 'Con Create reescribirá encima del archivo.
Dim Deserializador As New BinaryFormatter() 'Creamos el deserializador.
'Declaramos un objeto del tipo Persona.
Dim p As Persona
'Leemos p a través del deserializador y lo convertimos en tipo Persona.
p = CType(Deserializador.Deserialize(Archivo), Persona)
'Mostramos los datos de p.
MsgBox("Nombre: " + p.Nombre + " ; Edad: " + CStr(p.Edad))
Archivo.Close()
Archivo.Dispose()
End Sub
End Class