Páginas

martes, 7 de diciembre de 2010

Guardado de Clases Serializables

En algunos casos deseamos guardar información de una aplicación y no necesariamente lo queremos hacer en una base de datos, ni tampoco en un archivo de texto delimitado, ya sea porque nuestra estructura de datos sea compleja o por cierta seguridad, para esto podemos utilizar la Serializacion, esto se lo hace de esta manera.
Creamos la estructura que sera guardada en una clase serializable en este caso Alumnos
[Serializable]
public class Alumnos
{
   public string cedula;
   public string nombres;
}
Los resultados Obtenidos en un  form lo guardamos en una clase parecida a la que está arriba de la siguiente forma:
Alumnos al = new Alumnos();
al.cedula=Textbox1.Text;
al.nombres=Textbox2.Text;
Luego para guardarlos en un archivo utilizamos el SaveFileDialog para obtener el nombre y lo guardas serializado así:
FileStream stream = new FileStream(NewFileName, FileMode.Create, FileAccess.Write);
BinaryFormatter b = new BinaryFormatter();
b.Serialize(stream, al);
stream.Close();

Tomando en cuenta que "al" es la instancia de alumno, y "NewFileName" contiene el nombre completo del archivo. De esa manera tienes guardamos el contenido de al.
para recuperarlo utilizas el OpenFileDialog para pbtener el Nombre y  haces esto:
FileStream s = new FileStream(cFileName, FileMode.Open, FileAccess.Read);
BinaryFormatter b = new BinaryFormatter();
al = (Alumnos)b.Deserialize(s);
s.Close();