當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


erlang deflate(Z, Data, Flush)用法及代碼示例


deflate(Z, Data, Flush) -> Compressed
類型:
Z = zstream()
Data = iodata()
Flush = zflush()
Compressed = iolist()

壓縮盡可能多的數據,並在輸入緩衝區變空時停止。它可能會引入一些輸出延遲(讀取輸入而不產生任何輸出),除非強製刷新。

如果 Flush 設置為 sync ,則所有掛起的輸出都將刷新到輸出緩衝區,並且輸出在字節邊界上對齊,以便解壓縮器可以獲得迄今為止可用的所有輸入數據。刷新會降低某些壓縮算法的壓縮性能;因此,僅在必要時使用它。

如果 Flush 設置為 full ,則與 sync 一樣刷新所有輸出,並且重置壓縮狀態,以便如果先前的壓縮數據已損壞或需要隨機訪問,則可以從此時重新開始解壓縮。過於頻繁地使用 full 會嚴重降低壓縮效果。

如果Flush被設定為finish,處理掛起的輸入,刷新掛起的輸出,並且deflate/3返回。之後流上唯一可能的操作是deflateReset/1或者deflateEnd/1.

Flush可以設置為finish之後立馬deflateInit如果所有壓縮都是一步完成的。

例子:

zlib:deflateInit(Z),
B1 = zlib:deflate(Z,Data),
B2 = zlib:deflate(Z,<< >>,finish),
zlib:deflateEnd(Z),
list_to_binary([B1,B2])

相關用法


注:本文由純淨天空篩選整理自erlang.org大神的英文原創作品 deflate(Z, Data, Flush) -> Compressed。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。