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


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


inflateChunk(Z, Data) -> Decompressed | {more, Decompressed}
OTP 18.0
類型:
Z = zstream()
Data = iodata()
Decompressed = iolist()
警告

此函數已棄用,並將在未來版本中刪除。使用safeInflate/2 反而。

就像inflate/2,但解壓縮的數據不會超過通過配置的緩衝區所能容納的數據量setBufSize/2 。在以高壓縮比解壓縮流時非常有用,這樣少量的壓縮輸入就可以擴展至 1000 倍。

該函數返回{more, Decompressed},當有更多可用輸出時,並且inflateChunk/1是用來閱讀它的。

此函數可能會引入一些輸出延遲(讀取輸入而不產生任何輸出)。

如果需要預設字典來進一步解壓,則會拋出異常。看 inflateSetDictionary/2詳情。

例子:

walk(Compressed, Handler) ->
    Z = zlib:open(),
    zlib:inflateInit(Z),
    % Limit single uncompressed chunk size to 512kb
    zlib:setBufSize(Z, 512 * 1024),
    loop(Z, Handler, zlib:inflateChunk(Z, Compressed)),
    zlib:inflateEnd(Z),
    zlib:close(Z).

loop(Z, Handler, {more, Uncompressed}) ->
    Handler(Uncompressed),
    loop(Z, Handler, zlib:inflateChunk(Z));
loop(Z, Handler, Uncompressed) ->
    Handler(Uncompressed).

相關用法


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