GZIP Writer の終了を延期するとデータ損失が発生するのはなぜですか?

Susan Sarandon
リリース: 2024-11-02 09:00:29
オリジナル
565 人が閲覧しました

Why Does Deferring GZIP Writer Closure Lead to Data Loss?

GZIP ライターの終了を延期するとデータが失われる

背景:
gzip を使用する場合、gzip を利用する.NewWriter を使用してデータを圧縮し、Close() を遅延してライターを閉じると損失が発生する可能性があります

問題:
GZIP ライターの終了を延期すると、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 ライターを閉じます:

<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 Writer の終了を延期するとデータ損失が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!