2011-11-20 8 views
6

Chcę wyodrębnić plik zip programowo.Jak rozpakować plik zip C#

Szukałem google, ale go nie znalazłem. Używam tego kodu, ale otrzymuję ten błąd:

Magiczna liczba w nagłówku GZip jest nieprawidłowa. Upewnij się, że jesteś przekazując strumień GZip.

Kod:

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); 

       } 
      } 
     } 
    } 

Nie byłoby świetnie uznanie, czy ktoś może mi pomóc.

Dzięki Wcześniej.

Odpowiedz

11

Błąd sugeruje, że nie otwierasz pliku GZip. Biblioteka GZip nie może otworzyć standardowych archiwów ZIP.

Zobacz GZip Format on wikipedia

Można użyć DotNetZip aby otworzyć/odczytu/zapisu standardowych archiwów zip, a nawet napisać zaszyfrowane, chronione hasłem zamki. Jest również na nuget.

+0

Dzięki temu działa –

+0

nie ma za co! =) – gideon