I use the code below and get this error InvalidDataExcption: The magic number in GZip header is not correct. Make sure you are passing in a GZip stream.
I am trying to extract a Microsoft word .docx file.
(the code highlighter is doing weird stuff to my comments)
Imports System.IO
Imports System.IO.Compression
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim path As String = "C:\Users\Gio\Documents\Test.zip"
'path.Split("\")(path.Split("\").Length - 1)
DecompressFile(path, "test", "C:\Users\Gio\Documents")
End Sub
''' <summary>
'''Function to decompress a file using the GZipStream Class
''' </summary>
''' <param name="inputFileName">File that we want to decompress</param>
''' <param name="destFileName">Name we want the decompressed file to be</param>
''' <param name="destDirectory">Directory to save the file to</param>
''' <returns>True/False</returns>
''' <remarks></remarks>
Public Function DecompressFile(ByRef inputFileName As String, ByRef destFileName As String, ByRef destDirectory As String) As Boolean
'Try
'Create a MemoryStream from the file bytes
Dim stream As New MemoryStream(File.ReadAllBytes(inputFileName))
'Create a new GZipStream from the MemoryStream
Dim gZip As New GZipStream(stream, CompressionMode.Decompress)
'Byte array to hold bytes
Dim buffer(3) As Byte
'Read the stream
stream.Position = stream.Length - 5
stream.Read(buffer, 0, 4)
'Calculate the size of the decompressed bytes
Dim size As Integer = BitConverter.ToInt32(buffer, 0)
'Start at the beginning of the stream
stream.Position = 0
Dim decompressed(size - 1) As Byte
'Read decompressed bytes into byte array
gZip.Read(decompressed, 0, size)
'Close & clean up
gZip.Dispose()
stream.Dispose()
'Write the final file
File.WriteAllBytes(destDirectory & "\" & destFileName, decompressed)
Return True
'Catch ex As Exception
' MessageBox.Show(ex.ToString())
' Return False
'End Try
End Function
End Class
.docx files are saved in pkzip format. That’s completely different than gzip format.
SharpZipLib is one option you can use to read these files, although many others exist also.