Leer y Grabar una structura de un archivo binario

21/07/2005 - 13:15 por Manuel Candal | Informe spam
Tengo la siguiente estructura como esta a la hora de manejar una serie de
archivos binarios:

struct ARCHIVOS
{
byte tipo;
short version;
int numarchivos;
ARCHIVO archivos[];
}

struct ARCHIVO
{
TEXTO nombrearchivo;
int lenarchivo;
byte[] contenido;
}

struct TEXTO
{
int lentexto;
char[] texto;
}

Me interesa acelerar la carga del archivo binario, ya que ocupa más de 200
Mb.
He visto alguna página donde se daba la posibilidad de leer/grabar en
archivo directamente con la estructura, utilizando
System.Runtime.Interopservices y manejando atributos como MarshalAs y
StructLayout.

http://www.codeproject.com/csharp/F...eInput.asp
http://csharp.codenewbie.com/articl...age_1.html

Intentando aplicarlo veo que los array necesitan una longitud constante
definida, pero en mi caso utilizo arrays dinámicos.
¿Hay alguna forma de pasar este problema? ¿Alguna alternativa y que sea
rápida?



Un saludo.


.NET 1.1
 

Leer las respuestas

#1 Mariano Omar Rodriguez
22/07/2005 - 01:31 | Informe spam
No se si te sirva pero podrias usar un BufferedStream y escribir todo el
codigo como manejado.

Mariano

"Manuel Candal" <[ mcandal ] @ [ hotmail ] . [ com ]> wrote in message
news:%
Tengo la siguiente estructura como esta a la hora de manejar una serie de
archivos binarios:

struct ARCHIVOS
{
byte tipo;
short version;
int numarchivos;
ARCHIVO archivos[];
}

struct ARCHIVO
{
TEXTO nombrearchivo;
int lenarchivo;
byte[] contenido;
}

struct TEXTO
{
int lentexto;
char[] texto;
}

Me interesa acelerar la carga del archivo binario, ya que ocupa más de 200
Mb.
He visto alguna página donde se daba la posibilidad de leer/grabar en
archivo directamente con la estructura, utilizando
System.Runtime.Interopservices y manejando atributos como MarshalAs y
StructLayout.

http://www.codeproject.com/csharp/F...eInput.asp
http://csharp.codenewbie.com/articl...age_1.html

Intentando aplicarlo veo que los array necesitan una longitud constante
definida, pero en mi caso utilizo arrays dinámicos.
¿Hay alguna forma de pasar este problema? ¿Alguna alternativa y que sea
rápida?



Un saludo.


.NET 1.1


Preguntas similares