在vb.net上使用zlib.net壓縮字節後,具有相同長度的兩個文件具有不同長度是正常的嗎?zlib.net具有相同長度的2個文件導致壓縮後有2個不同的最終長度
這是我使用使用zlib.net參考壓縮模塊,2檔是almose相同,有中庸之道小於100個字節使差在它們之間
Imports System.IO
Imports zlib
Module zlib_compression
Public Sub CopyStream(ByRef input As System.IO.Stream, ByRef output As System.IO.Stream)
Dim num1 As Integer
Dim buffer1 As Byte() = New Byte(2000 - 1) {}
num1 = input.Read(buffer1, 0, 2000)
Do While (num1 > 0)
output.Write(buffer1, 0, num1)
num1 = input.Read(buffer1, 0, 2000)
Loop
output.Flush()
End Sub
Public Function Compress(ByVal InputBytes As Byte()) As Byte()
Using output As New MemoryStream
Dim outZStream As Stream = New ZOutputStream(output, zlib.zlibConst.Z_BEST_SPEED)
Using input As Stream = New MemoryStream(InputBytes)
CopyStream(input, outZStream)
outZStream.Close() 'do not remove
Return output.ToArray()
End Using
End Using
End Function
Public Function Decompress(ByVal InputBytes As Byte()) As Byte()
Using output As New MemoryStream
Using outZStream As Stream = New ZOutputStream(output)
Using input As Stream = New MemoryStream(InputBytes)
CopyStream(input, outZStream)
Return output.ToArray()
End Using
End Using
End Using
End Function
End Module
此外,當從其他模塊調用函數(解壓縮時出現此問題)時,有時copystream子文件會卡住output.write行並且form1停止響應 – user3781458 2014-12-07 23:37:31
對於不同的文件進行不同的壓縮是完全正常的。您甚至可以使用常規壓縮工具來測試:創建未排序的單詞列表並對其進行壓縮。現在分類並再次壓縮。第二個文件通常會更小。 – usr2564301 2014-12-08 00:08:30
和我得到的output.write行錯誤,當我在另一個模塊中使用循環來解壓縮不同的文件,如何解決這個問題?它說了一些關於它的膨脹並沒有給出太多的信息 – user3781458 2014-12-08 00:23:11