2014-12-07 58 views
0

在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 
+0

此外,當從其他模塊調用函數(解壓縮時出現此問題)時,有時copystream子文件會卡住output.write行並且form1停止響應 – user3781458 2014-12-07 23:37:31

+0

對於不同的文件進行不同的壓縮是完全正常的。您甚至可以使用常規壓縮工具來測試:創建未排序的單詞列表並對其進行壓縮。現在分類並再次壓縮。第二個文件通常會更小。 – usr2564301 2014-12-08 00:08:30

+0

和我得到的output.write行錯誤,當我在另一個模塊中使用循環來解壓縮不同的文件,如何解決這個問題?它說了一些關於它的膨脹並沒有給出太多的信息 – user3781458 2014-12-08 00:23:11

回答

1

當然,是的。事實上,這是必然的。無法將所有相同長度的文件無損地壓縮爲較小的尺寸,因爲較小尺寸中沒有足夠的位來標識所有原始文件。如果一些被壓縮,那麼一些必須被擴展。

+0

什麼aboute這個問題[Zlib.net循環解壓縮卡住](http://stackoverflow.com/questions/27349922/zlib-net-loop-decompressing-get-stuck),你有任何想法如何解決它? – user3781458 2014-12-08 20:16:11

+1

我看到了。這不是一個代碼調試網站。您需要發佈一個實際的問題,試圖解決問題以及卡住的位置。 – 2014-12-08 22:39:19

相關問題