首頁 > 後端開發 > Golang > 主體

為什麼推遲 GZIP 編寫器關閉會導致資料遺失?

Susan Sarandon
發布: 2024-11-02 09:00:29
原創
565 人瀏覽過

Why Does Deferring GZIP Writer Closure Lead to Data Loss?

延遲GZIP 編寫器關閉會導致資料遺失

背景:
使用gzip .NewWriter 壓縮資料並延遲Close() 關閉writer 可能會導致壓縮資料遺失。

問題:
延遲關閉 GZIP writer 會導致遺失資料GZIP 頁腳的。依照 Close 函數文件中的說明:

Close closes the Writer by flushing any unwritten data to the underlying io.Writer and writing the GZIP footer. It does not close the underlying io.Writer.
登入後複製

解決方案:
為了防止資料遺失,請在傳回壓縮資料之前關閉 GZIP writer:

<code class="go">func zipData(originData []byte) ([]byte, error) {
    var bf bytes.Buffer
    gw := gzip.NewWriter(&bf)

    _, err := gw.Write(originData)
    if err != nil {
        return nil, errors.New(fmt.Sprintf("gzip data err: %v", err))
    }

    err = gw.Flush()
    if err != nil {
        return nil, err
    }

    if err := gw.Close(); err != nil {
        return nil, errors.New(fmt.Sprintf("close data err: %v", err))
    }

    return bf.Bytes(), nil
}</code>
登入後複製

以上是為什麼推遲 GZIP 編寫器關閉會導致資料遺失?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!