2011-11-20 53 views
6

Tôi muốn trích xuất một tệp zip theo chương trình.Cách giải nén tệp zip C#

Tôi đã tìm kiếm trên google nhưng tôi chưa tìm thấy. Tôi đang sử dụng các mã này nhưng tôi gặp phải lỗi này

Số ma thuật trong tiêu đề GZip không chính xác. Đảm bảo bạn đang truyền trong luồng GZip.

Code:

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

       } 
      } 
     } 
    } 

Sẽ có sự đánh giá tuyệt vời nếu ai đó có thể giúp tôi.

Cảm ơn trước.

Trả lời

11

Lỗi cho biết bạn không mở tệp GZip. Thư viện GZip không thể mở Lưu trữ ZIP chuẩn.

Xem GZip Format on wikipedia

Bạn có thể sử dụng DotNetZip để mở/đọc/viết tài liệu lưu trữ zip tiêu chuẩn và thậm chí viết mã hóa, mật khẩu bảo vệ kéo khóa. Nó cũng có trên nuget.

+0

Nhờ hoạt động của nó –

+0

bạn được chào đón! =) – gideon

Các vấn đề liên quan