[2.0] Descomprimir un fichero GZip

2056 vistas

Primero tenemos que añadir los siguientes "Imports"



csharp
  1. using System.IO;
  2. using System.IO.Compression;



La siguiente función recibirá por parámetro el camino completo del fichero GZip y el camino completo de destino del fichero a descomprimir.



csharp
  1. public bool decompress(string pathSource, string pathDestination)
  2. {
  3.   try {
  4.     FileStream miFileStream = new FileStream(pathSource, FileMode.Open);
  5.     GZipStream miGzipStream = new GZipStream(miFileStream, CompressionMode.Decompress);
  6.     byte[] sizeBytes = new byte[3];
  7.     int position = System.Convert.ToInt32(miFileStream.Length - 4);
  8.     miFileStream.Position = position;
  9.     miFileStream.Read(sizeBytes, 0, 4);
  10.     miFileStream.Position = 0;
  11.     int sizeFile = BitConverter.ToInt32(sizeBytes, 0);
  12.     byte[] buffer = new byte[sizeFile + 100];
  13.     int miOffset = 0;
  14.     while ((true)) {
  15.       int decompressBytes = miGzipStream.Read(buffer, miOffset, 100);
  16.       if (decompressBytes == 0) {
  17.         break;
  18.       }
  19.       miOffset += decompressBytes;
  20.     }
  21.  
  22.     miFileStream = new FileStream(pathDestination, FileMode.Create);
  23.     miFileStream.Write(buffer, 0, sizeFile - 1);
  24.     miFileStream.Flush();
  25.     miFileStream.Close();
  26.     miGzipStream.Close();
  27.     return true;
  28.   } catch (Exception ex) {
  29.     return false;
  30.   }
  31. }