Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/06/2008, 16:25
vilagutv7
 
Fecha de Ingreso: julio-2006
Mensajes: 150
Antigüedad: 18 años, 7 meses
Puntos: 0
TargetInvocation Exception

Buenas tardes el codigo es el siguiente:

using System;
using System.Net;
using System.IO;
using System.Text;
using System.Globalization;
using System.Data;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters;
using System.Runtime.Serialization.Formatters.Binary;
using System.Xml;
using System.Data.OleDb;
using FastSerializer;

namespace SerializaHash
{
[Serializable]public class campos : ISerializable
{
public String clave;
public List<int> posiciones = new List<int>();

//Default constructor
public campos()
{
clave = "";
posiciones = null;
}

//Deserialization constructor.
public campos(SerializationInfo info, StreamingContext ctxt)
{
SerializationReader sr = SerializationReader.GetReader(info);
clave = sr.ReadString();
posiciones = (List<int>)sr.ReadList<int>();
}

//Serialization function.
public void GetObjectData(SerializationInfo info, StreamingContext ctxt)
{
SerializationWriter sw = SerializationWriter.GetWriter();
sw.Write(clave);
sw.Write<int>(posiciones);
}

}

class Program
{
static void Main(string[] args)
{
FileStream fs = new FileStream("D:\\Ernesto\\Tesis\\Columnas\\id_Uno.P ersonas.txt", FileMode.Open, FileAccess.Read);
//FileStream prueba = new FileStream("D:\\Ernesto\\Tesis\\prueba.txt", FileMode.OpenOrCreate, FileAccess.Write);
Hashtable a = new Hashtable();
Hashtable b = new Hashtable();

try
{
System.Console.WriteLine("Leyendo Archivo en formato actual " + DateTime.Now);

BinaryFormatter bf = new BinaryFormatter();
a = (Hashtable)bf.Deserialize(fs);

System.Console.WriteLine("Fin Lectura Formato actual " + DateTime.Now);

IFormatter formatter = new BinaryFormatter();

int contador = 0;
int arch = 0;
List<campos> listaCamp = new List<campos>();

//Serializacion
System.Console.WriteLine("Inicio de Serializacion nueva " + DateTime.Now);

foreach (DictionaryEntry key in a)
{
campos camp = new campos();
camp.clave = key.Key.ToString();
camp.posiciones = (List<int>)key.Value;
contador++;
listaCamp.Add(camp);

if (contador == 12500)
{
arch++;
Stream stream = new FileStream("D:\\Ernesto\\Pruebas\\prueba" + arch + ".txt", FileMode.OpenOrCreate, FileAccess.Write);
formatter.Serialize(stream, listaCamp);
stream.Close();
contador = 0;
listaCamp.Clear();
}
}

System.Console.WriteLine("Fin Serializacion Nueva " + DateTime.Now);


BinaryFormatter bs = new BinaryFormatter();


//Deserializacion
System.Console.WriteLine("Inicio Deserializacion Nueva " + DateTime.Now);

for (int i = 1; i < 400; i++)
{
Stream stream1 = new FileStream("D:\\Ernesto\\Pruebas\\prueba" + i + ".txt", FileMode.Open, FileAccess.Read);
List<campos> lista = new List<campos>();
lista = (List<campos>)bs.Deserialize(stream1);
for (int j = 0; j < lista.Count; j++)
{
String clavecita = lista[j].clave;
List<int> pos = new List<int>();
pos = (List<int>)lista[j].posiciones;
b.Add(clavecita,pos);
}
System.Console.WriteLine("Archivo # " + i + " " + DateTime.Now);
}

System.Console.WriteLine("Fin Deserializacion Nueva " + DateTime.Now);

// stream.Close();


}

finally
{

fs.Close();

}
}
}
}

En seguida les adjunto el codigo de fast serializer que se encuentra en la pagina de Code Projects