Maison > développement back-end > Golang > le corps du texte

Pourquoi le report de la fermeture du graveur GZIP entraîne-t-il une perte de données ?

Susan Sarandon
Libérer: 2024-11-02 09:00:29
original
565 Les gens l'ont consulté

Why Does Deferring GZIP Writer Closure Lead to Data Loss?

Le report de la fermeture de l'éditeur GZIP entraîne une perte de données

Contexte :
Lorsque vous travaillez avec gzip, utilisez gzip .NewWriter pour compresser les données et différer Close() pour fermer l'enregistreur peut entraîner une perte de données compressées.

Problème :
Différer la fermeture de l'enregistreur GZIP entraîne l'absence de du pied de page GZIP. Comme spécifié dans la documentation de la fonction 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.
Copier après la connexion

Solution :
Pour éviter la perte de données, fermez l'enregistreur GZIP avant de renvoyer les données compressées :

<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>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!