Я использую код ниже и получаю эту ошибку InvalidDataExcption: The magic number in GZip header is not correct. Make sure you are passing in a GZip stream.
Я пытаюсь извлечь файл Microsoft Word .docx.
(подсветка кода делает странные вещи с моими комментариями)
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