2009-08-28 16 views
16

Tengo un archivo gunzip asfaltado llamado ZippedXmls.tar.gz que tiene 2 xml dentro. Necesito descomprimir este archivo programáticamente y el resultado debe ser 2 xmls copiados en una carpeta.Descompresión de un archivo .gz usando C#

¿Cómo logro esto usando C#?

+2

¿Cómo se almacenan dos 2 "xmls" en un archivo .gz? ¿O es en realidad un archivo .tar.gz? – dtb

+0

Tenga en cuenta que el estándar gzip solo comprime y descomprime secuencias de bytes: si tiene grupos de archivos comprimidos, es probable que se archiven como un solo archivo antes de ser comprimidos, como ha dicho el dtb. –

Respuesta

33

He usado de .Net incorporado GZipStream para gzipping flujos de bytes y funciona muy bien. Sospecho que tus archivos están alquitranados primero, antes de ser comprimidos.

Usted ha pedido código, así que aquí está una muestra, suponiendo que tiene un único archivo que se subió la cremallera:

FileStream stream = new FileStream("output.xml", FileMode.Create); // this is the output 
GZipStream uncompressed = new GZipStream(stream, CompressionMode.Decompress); 

uncompressed.Write(bytes,0,bytes.Length); // write all compressed bytes 
uncompressed.Flush(); 
uncompressed.Close(); 

stream.Dispose(); 

Editar:

Usted ha cambiado de tal manera que éste file es un archivo tar.gz - técnicamente mi respuesta no es aplicable a su situación, pero la dejo aquí para las personas que quieran manejar archivos .gz.

+0

sí, el archivo está embreado y luego comprimido. ¿Cómo recupero 2 xmls en este caso? Gracias por su ayuda. –

+0

sharpziplib es lo que quiere usar, entonces. Maneja archivos tar.gz. –

+0

Gracias Charlie por tu ayuda! –

Cuestiones relacionadas