2011-11-20 29 views
6

Quiero extraer un archivo zip programáticamente.Cómo descomprimir un archivo zip C#

He buscado en google pero no lo he encontrado. Estoy usando estos códigos pero obtengo este error

El número mágico en el encabezado GZip no es correcto. Asegúrese de que está pasando en una transmisión GZip.

Código:

public static void Decompress(FileInfo fi) 
    { 
     using (FileStream inFile = fi.OpenRead()) 
     { 
      string curFile = fi.FullName; 
      string origName = curFile.Remove(curFile.Length - fi.Extension.Length); 
      using (FileStream outFile = File.Create(origName)) 
      { 
       using (GZipStream Decompress = new GZipStream(inFile, 
         CompressionMode.Decompress)) 
       { 
        byte[] buffer = new byte[4096]; 
        int numRead; 
        while ((numRead = Decompress.Read(buffer, 0, buffer.Length)) != 0) 
        { 
         outFile.Write(buffer, 0, numRead); 
        } 
        Console.WriteLine("Decompressed: {0}", fi.Name); 

       } 
      } 
     } 
    } 

Habría gran aprecio si alguien me podría ayudar.

Gracias de antemano.

Respuesta

11

El error sugiere que no está abriendo un archivo GZip. La biblioteca de GZip no puede abrir archivos ZIP estándar.

Ver GZip Format on wikipedia

Puede utilizar DotNetZip para abrir/leer/escribir archivos zip estándar e incluso escribir, cremalleras protegidas por contraseña cifrada. También está en nuget.

+0

Gracias Its Working –

+0

¡De nada! =) – gideon

Cuestiones relacionadas