Maison  >  Article  >  développement back-end  >  Comment utiliser le package gzip pour la compression

Comment utiliser le package gzip pour la compression

PHPz
PHPzoriginal
2023-04-10 14:17:272159parcourir

En langage Go, vous pouvez utiliser le package gzip pour effectuer des opérations de compression et de décompression. Le package gzip fournit deux fonctions : gzip.NewReader() et gzip.NewWriter() pour créer des lecteurs et des rédacteurs. Ci-dessous, nous présenterons en détail comment utiliser le package gzip pour la compression.

1. Opération de compression

Tout d'abord, nous devons créer un fichier de sortie et utiliser la fonction gzip.NewWriter() pour créer un écrivain. Nous pouvons ensuite utiliser la fonction write() pour écrire les données dans le fichier gzip. Une fois l'écriture terminée, appelez la fonction Close() pour fermer le fichier gzip.

Ce qui suit est un programme de compression simple qui compresse un fichier texte dans un fichier au format gzip :

package main
  
import (
    "compress/gzip"
    "os"
)
  
func main() {
    // 创建压缩文件
    output, err := os.Create("test.gz")
    if err != nil {
        panic(err)
    }
    defer output.Close()
  
    // 创建写入器
    writer := gzip.NewWriter(output)
    defer writer.Close()
  
    // 读取数据并压缩
    data := []byte("Hello, Golang!")
    _, err = writer.Write(data)
    if err != nil {
        panic(err)
    }
    writer.Flush()
}

Lorsque nous exécutons le programme, un fichier au format gzip nommé test.gz sera généré.

Dans l'exemple ci-dessus, nous avons utilisé la fonctionwriter.Flush(), qui est une méthode pour écrire des données du cache vers le flux de sortie. C'est très important car le package gzip utilise la mise en cache pour améliorer les performances. Si nous n'appelons pas la fonction Flush(), la sortie des données vers le fichier peut être incomplète.

2. Opération de décompression

Ce qui précède décrit comment effectuer l'opération de compression. Nous allons maintenant voir comment effectuer l'opération de décompression.

Tout d'abord, nous devons créer un fichier gzip puis créer un lecteur à l'aide de la fonction gzip.NewReader(). Ensuite, nous pouvons utiliser la fonction read() pour lire les données du fichier gzip. Une fois terminé, nous appelons la fonction Close() pour fermer le fichier gzip.

Ce qui suit est un programme de décompression simple pour décompresser un fichier gzip nommé test.gz en un fichier texte :

package main
  
import (
    "compress/gzip"
    "io"
    "os"
)
  
func main() {
    // 打开gzip文件并创建读取器
    input, err := os.Open("test.gz")
    if err != nil {
        panic(err)
    }
    defer input.Close()
    reader, err := gzip.NewReader(input)
    defer reader.Close()
  
    // 读取数据并解压缩
    output, err := os.Create("test.txt")
    if err != nil {
        panic(err)
    }
    defer output.Close()
    _, err = io.Copy(output, reader)
    if err != nil {
        panic(err)
    }
}

Lorsque nous exécutons le programme, un fichier nommé test.txt sera généré.

3. Résumé

Dans le langage Go, il est très pratique et simple d'utiliser le package gzip pour la compression et la décompression. Le package gzip fournit les fonctions gzip.NewReader() et gzip.NewWriter() pour créer des lecteurs et des écrivains, ainsi que la fonction io.Copy() pour lire les données des lecteurs et écrire sur les écrivains dans le vaisseau.

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!

Déclaration:
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