0

BZip2 を使用してファイルを圧縮し、それを新しいファイルに保存するプログラムがあります。

Public Sub Create(ByVal outPathname As String, ByVal filePath As String)
    Dim msCompressed As New MemoryStream()
    Dim zosCompressed As New BZip2OutputStream(msCompressed)
    Dim fileInput As New FileStream(filePath, FileMode.Open)
    Dim buffer As Byte() = GetStreamAsByteArray(fileInput)
    zosCompressed.Write(buffer, 0, buffer.Length)
    zosCompressed.Flush()
    zosCompressed.Close()
    buffer = msCompressed.ToArray()
    Dim FileOutput As New FileStream(outPathname, FileMode.Create, FileAccess.Write)
    FileOutput.Write(buffer, 0, buffer.LongLength)
    FileOutput.Flush()
    FileOutput.Close()
End Sub

しかし、作成したファイルを解凍できない理由がわかりません。ここで私の減圧装置の何が問題なのか誰か教えてもらえますか? (コンプレッサーとは別のプログラムです。)

Public Sub Extract(ByVal archiveFilenameIn As String, ByVal outFolder As String)
    Dim fileInput As New FileStream(archiveFilenameIn, FileMode.Open)
    Dim msUncompressed As New MemoryStream(GetStreamAsByteArray(fileInput))
    Dim zosDecompressed As New BZip2InputStream(msUncompressed)
    Dim buffer As Byte() = GetStreamAsByteArray(fileInput)
    zosDecompressed.Read(buffer, 0, buffer.Length())
    buffer = msUncompressed.ToArray()
    Dim FileOutput As New FileStream(outFolder & "\temporary.bmp", FileMode.Create, FileAccess.Write)
    FileOutput.Write(buffer, 0, buffer.LongLength)
    FileOutput.Flush()
    FileOutput.Close()
    zosDecompressed.Close()
    msUncompressed.Close()
    fileInput.Close()
End Sub

編集:ここでは、ストリームをバイト配列に変換する関数も使用しています:

Private Function GetStreamAsByteArray(ByVal stream As System.IO.Stream) As Byte()
    Dim streamLength As Integer = Convert.ToInt32(stream.Length)
    Dim fileData As Byte() = New Byte(streamLength) {}

    ' Read the file into a byte array
    stream.Read(fileData, 0, streamLength)
    stream.Close()

    Return fileData
End Function

ヘルプ?

4

1 に答える 1