Serializacion

11/11/2007 - 23:07 por daniel | Informe spam
Hola, necesito ayuda sobre serializacion, si grabo en un archivo los valores
de una estructura despues como los puedo leer acomodando cada valor de cada
miembro de la estructura en el lugar que le corresponde? este es el codigo
que utilizo para escribir en el archivo:

struct Registro
{
public string Nombre;
public int Edad;
public int Registro;
}

Registro[] ListaRegistros = new Registro[10];

... // todo el proceso de captura de cada uno de los registros

// ahora se guarda la lista de estructuras registro en el archivo
Registro.txt
using (System.IO.FileStream fs = System.IO.File.Create("Registro.txt",
1024))
{
foreach (Registro reg in ListaRegistros)
{
byte[] info = new
System.Text.UTF8Encoding(true).GetBytes("Nombre: " + ListaRegistros.Nombre +
" Edad: " + ListaRegistros.Edad.ToString() + " Registro: " +
ListaRegistros.Registro.ToString());
fs.Write(info, 0, info.Length);
}
}

Todo funciona bien y guarda todos los registros en el archivo, pero ahora mi
pregunta es como despues leer ese archivo y acomodar cada registro en una
estructura registro es decir crear la lista ListaRegistros pero cargandole
la informacion de los regitros del archivo en cada registro correspondiente.
Si alguien me puede ayudar gracias.

Ademas nose si la serializacion es tambien parte de C#. Gracias
 

Leer las respuestas

#1 Alberto Poblacion
12/11/2007 - 08:59 | Informe spam
"daniel" wrote in message
news:
Hola, necesito ayuda sobre serializacion, si grabo en un archivo los
valores de una estructura despues como los puedo leer acomodando cada
valor de cada miembro de la estructura en el lugar que le corresponde?
este es el codigo que utilizo para escribir en el archivo:

struct Registro
{
public string Nombre;
public int Edad;
public int Registro;
}

Registro[] ListaRegistros = new Registro[10];
[... grabación paso a paso de los datos ...]
Ademas nose si la serializacion es tambien parte de C#. Gracias



En el Framework hay librerías de serialización que te pueden resolver el
problema sin programar tanto. Hay una serialización nativa que realizan las
clases BinayFormatter y SoapFormatter, y otra en Xml que usa el
XmlSerializer pero solo está en el Framework 2.0.

Suponiendo que uses la binaria, lo primero necesitarías marcar con el
atributo [Serializable] tu clase, y luego crear un BinaryFormatter para
serializar y deserializar:

using System.Runtime.Serialization.Formatters.Binary;

[Serializable]
struct Registro
{
public string Nombre;
public int Edad;
public int Registro;
}

Registro[] ListaRegistros = new Registro[10];

//Para serializar:
BinaryFormatter bf = new BinaryFormatter();
using (System.IO.FileStream fs = System.IO.File.Create("Registro.txt"))
{
bf.Serialize(fs, ListaRegistros);
}

//Para deserializar:
BinaryFormatter bf = new BinaryFormatter();
using (System.IO.FileStream fs = System.IO.File.Open("Registro.txt",
FileMode.Open))
{
ListaRegistros = (Registro[]) bf.Deserialize(fs);
}

Preguntas similares