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

Preguntas similare

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);
}
Respuesta Responder a este mensaje
#2 daniel
12/11/2007 - 18:40 | Informe spam
Gracias Alberto resolvi el problema con tu ayuda, pero se me presento otro
problema, como puedo serializar una estructura de tipo Color (hablando claro
de la estructura del Framework) ?

"Alberto Poblacion"
escribió en el mensaje de noticias
news:
"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);
}


Respuesta Responder a este mensaje
#3 Alberto Poblacion
12/11/2007 - 21:44 | Informe spam
"daniel" wrote in message
news:
Gracias Alberto resolvi el problema con tu ayuda, pero se me presento otro
problema, como puedo serializar una estructura de tipo Color (hablando
claro de la estructura del Framework) ?



System.Drawing.Color es [Serializable]. Se debería salvar sin ningún
problema si usas como en el ejemplo anterior un BinaryFormatter para
serializarlo (y se serializa automáticamente si está dentro de cualquier
clase Serializable que contenga campos de tipo Color).
Respuesta Responder a este mensaje
#4 daniel
13/11/2007 - 15:34 | Informe spam
Otravez gracias Alberto tienes razon sobre la estrctura Color de
System.Drawing, lo que pasa es que mi error fue no darme cuenta sobre que
tipo de estructura de Color estaba utilizando es decir trataba de serializar
una estructura de tipo Microsoft.Xna.Framework.Graphics la cual no es
serializable, pero bueno, gracias otravez.

"Alberto Poblacion"
escribió en el mensaje de noticias
news:u%
"daniel" wrote in message
news:
Gracias Alberto resolvi el problema con tu ayuda, pero se me presento
otro problema, como puedo serializar una estructura de tipo Color
(hablando claro de la estructura del Framework) ?



System.Drawing.Color es [Serializable]. Se debería salvar sin ningún
problema si usas como en el ejemplo anterior un BinaryFormatter para
serializarlo (y se serializa automáticamente si está dentro de cualquier
clase Serializable que contenga campos de tipo Color).

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida