Tengo un código que descarga archivos comprimidos y los descomprime. El problema es que no puedo hacer que descomprima todo el archivo, solo lee los primeros 4096 bytes y luego unos 500 más.GZipStream no lee todo el archivo
Byte[] buffer = new Byte[4096];
int count = 0;
FileStream fileInput = new FileStream("input.gzip", FileMode.Open, FileAccess.Read, FileShare.Read);
FileStream fileOutput = new FileStream("output.dat", FileMode.Create, FileAccess.Write, FileShare.None);
GZipStream gzipStream = new GZipStream(fileInput, CompressionMode.Decompress, true);
// Read from gzip steam
while ((count = gzipStream.Read(buffer, 0, buffer.Length)) > 0)
{
// Write to output file
fileOutput.Write(buffer, 0, count);
}
// Close the streams
...
He comprobado el archivo descargado; es 13MB cuando está comprimido, y contiene un archivo XML. He descomprimido manualmente el archivo XML, y el contenido está allí. Pero cuando lo hago con este código, solo muestra el comienzo del archivo XML.
¿Alguien tiene alguna idea de por qué esto podría estar pasando?
Recuerdo haber recibido este problema cuando estaba escribiendo una rutina de descompresión. Sin embargo, he buscado el código de trabajo con el que terminé y se parece al tuyo además de estar envuelto en bloques 'using'. –
¿Está llamando a un método Flush()? – n535
Probado con Flush(), no ayudó. – Edgar