Les algorithmes Gzip et Zlib sont couramment utilisés pour compresser et décompresser des fichiers. Gzip est principalement utilisé pour compresser des fichiers uniques, tandis que Zlib compresse principalement des flux de données. Les algorithmes utilisent l'algorithme de compression Deflate pour la compression, bien que Gzip fournisse des fonctionnalités supplémentaires, notamment la vérification des erreurs et les métadonnées des fichiers.
Gzip a fourni de meilleurs taux de compression que Zlib. Cependant, Gzip nécessite plus de puissance de traitement pour compresser et décompresser les données. Dans la plupart des cas, vous devez utiliser Gzip pour compresser les fichiers et Zlib pour compresser les flux de données.
Go fournit la fonctionnalité permettant de compresser les données, y compris les fichiers via le compresse emballer.
Le forfait Compress
Le compresse prend en charge la compression des données via le compresser/gzip et compresser/zlib packages, entre autres fonctionnalités.
Le gzip prend en charge la compression et la décompression des données au format de fichier gzip, y compris les opérations de lecture et d'écriture comme spécifié dans RFC 1952. Tandis que le zlib package aide à compresser et décompresser les données au format zlib.
Vous pouvez importer gzip et zlib du compresse paquet utilisant le importer mot-clé.
importer (
"compresser/gzip"// importer gzip
"compresser/zlib"// importer zlib
)
Compresser et décompresser des fichiers avec Gzip
Gzip est un format de fichier et une application logicielle pour la compression et la décompression de fichiers. Gzip utilise l'algorithme de chaîne Lempel-Ziv-Markov (LZ77) pour compresser les données, et l'algorithme est souvent utilisé pour compresser des fichiers texte, tels que des fichiers HTML, CSS ou JavaScript.
Le processus de compression des fichiers avec le gzip package est simple et intuitif. Vous devrez ouvrir le fichier, créer un fichier gzip, créer un écrivain gzip et copier l'original le contenu du fichier à l'écrivain gzip avant l'opération de vidage qui garantit que le processus d'écriture est complet.
Lance ça commande bash dans le terminal de votre répertoire de travail sur les systèmes Unix pour créer un exemple de fichier texte, puis insérez du texte dans le fichier.
// crée un fichier texte.
touchez example.txt
// dirige la chaîne vers le fichier
echo 'Bonjour, monde!' > exemple.txt}
Après avoir créé le fichier et inséré le texte, vous pouvez importer le gzip, io, et os paquets pour l'opération de compression.
Voici comment vous pouvez utiliser le compresser/gzip package pour compresser un fichier texte.
importer (
"compresser/gzip"
"io"
"os"
)fonctionprincipal() {
// Ouvre le fichier d'origine
fichier d'origine, erreur := os. Ouvrir("exemple.txt")
si erreur != néant {
panique(se tromper)
}
reporter fichier d'origine. Fermer()// Crée un nouveau fichier gzippé
gzippedFile, err := os. Créer("exemple.txt.gz")
si erreur != néant {
panique(se tromper)
}
reporter gzippéFichier. Fermer()// Crée un nouvel écrivain gzip
gzipWriter := gzip. NewWriter (fichier gzippé)
reporter gzipWriter. Fermer()// Copie le contenu du fichier d'origine dans le graveur gzip
_, erreur = io. Copier (gzipWriter, originalFile)
si erreur != néant {
panique(se tromper)
}
// Videz le rédacteur gzip pour vous assurer que toutes les données sont écrites
gzipWriter. Affleurer()
}
Le Ouvrir fonction de la os package ouvre le fichier texte et le Fermer fonction ferme le fichier avec un reporter déclaration. Le Créer la fonction crée un fichier gzippé, et la Nouvel écrivain fonction de la gzip package écrit le contenu du fichier texte dans le fichier gzip en utilisant le Copie fonction de la io emballer.
Le Affleurer méthode de la gzipWriter instance vide le rédacteur gzip une fois que toutes les données sont disponibles sur le fichier compressé.
Vous pouvez récupérer le fichier d'origine à partir d'un fichier compressé via un processus de décompression. Le processus de décompression d'un fichier est similaire; vous allez ouvrir le fichier et créer un lecteur de fichier gzip, puis créer un nouveau fichier pour contenir les données non compressées avant de copier le contenu dans le nouveau fichier.
importer (
"compresser/gzip"
"io"
"os"
)fonctionprincipal() {
// Ouvre le fichier gzippé
gzippedFile, err := os. Ouvrir("exemple.txt.gz")
si erreur != néant {
panique(se tromper)
}
reporter gzippéFichier. Fermer()// Créer un nouveau lecteur gzip
gzipReader, erreur := gzip. NewReader (fichier gzippé)
reporter gzipReader. Fermer()// Crée un nouveau fichier pour contenir les données non compressées
uncompressedFile, err := os. Créer("exemple.txt")
si erreur != néant {
panique(se tromper)
}
reporter fichier non compressé. Fermer()
// Copie le contenu du lecteur gzip dans le nouveau fichier
_, erreur = io. Copier (fichier non compressé, gzipReader)
si erreur != néant {
panique(se tromper)
}
}
Le Ouvrir fonction de la os package ouvre le fichier gzippé et le Nouveaulecteur fonction de la gzip package lit le fichier compressé. Le Créer fonction de la os package crée un nouveau fichier texte. Le Copie fonction copie le contenu du gzipReader au fichier non compressé.
Compresser et décompresser des données avec Zlib
Zlib est une bibliothèque pour la compression et la décompression de données; la bibliothèque utilise également l'algorithme LZ77. Zlib est écrit en C et est largement utilisé comme base pour d'autres bibliothèques et logiciels de compression. Contrairement à gzip, zlib est une bibliothèque, et zlib ne comprend pas un format de fichier. Cependant, il est souvent utilisé pour compresser des données stockées dans des formats de conteneur, tels que PNG ou HTTP.
Le processus de compression avec zlib est le même que pour gzip. Vous allez créer un fichier zlib, configurer un écrivain, ouvrir le fichier d'origine et copier le contenu dans le fichier compressé.
importer (
"compresser/zlib"
"io"
"os"
)fonctionprincipal() {
// Crée un nouveau fichier "example.zlib"
fichier, erreur := os. Créer("exemple.zlib")
// Si une erreur se produit, paniquez et arrêtez le programme
si erreur != néant {
panique(se tromper)
}
// Assurez-vous que le fichier est fermé après le retour de la fonction
reporter déposer. Fermer()// Crée un nouvel écrivain zlib avec le meilleur niveau de compression
écrivain, euh := zlib. NewWriterLevel (fichier, zlib. Meilleure compression)
// Si une erreur se produit, paniquez et arrêtez le programme
si erreur != néant {
panique(se tromper)
}
// Assurez-vous que l'écrivain est fermé après le retour de la fonction
reporter écrivain. Fermer()// Ouvre le fichier d'entrée "example.txt"
inputFile, erreur := os. Ouvrir("exemple.txt")
// Si une erreur se produit, paniquez et arrêtez le programme
si erreur != néant {
panique(se tromper)
}
// Assurez-vous que le fichier d'entrée est fermé après le retour de la fonction
reporter inputFile. Fermer()
// Copie le contenu du fichier d'entrée dans le rédacteur
io. Copier (writer, inputFile)
}
Le Créer La méthode crée le fichier zlib, et la méthode NouveauNiveauWriter La fonction crée un écrivain pour le fichier avec l'option spécifiée (dans ce cas, le Meilleure compression option). Le Ouvrir méthode de la os package ouvre le fichier texte et le Copie fonction de la io package copie le contenu du fichier texte dans le fichier zlib lors du processus de compression.
Pour décompresser le fichier zlib, vous devrez ouvrir le fichier compressé, créer un nouveau lecteur zlib, puis enfin copier le contenu du lecteur sur la sortie standard.
importer (
"compresser/zlib"
"io"
"os"
)fonctionprincipal() {
// Ouvre le fichier compressé "fichier_compressé.zlib"
fichier, erreur := os. Ouvrir("fichier_compressé.zlib")
// Si une erreur se produit, paniquez et arrêtez le programme
si erreur != néant {
panique(se tromper)
}
// Assurez-vous que le fichier est fermé après le retour de la fonction
reporter déposer. Fermer()// Crée un nouveau lecteur zlib pour le fichier compressé
lecteur, euh := zlib. NouveauReader (fichier)
// Si une erreur se produit, paniquez et arrêtez le programme
si erreur != néant {
panique(se tromper)
}
// Assurez-vous que le lecteur est fermé après le retour de la fonction
reporter lecteur. Fermer()
// Copie le contenu du lecteur sur la sortie standard
io. Copie (os. Stdout, lecteur)
}
La fonction main ouvre le fichier zlib avec le os paquets Ouvrir fonction, et la Nouveaulecteur fonction de la zlib Le package lit le fichier zlib dans une instance de lecteur. Le Copie méthode de la io package copie le contenu du lecteur vers la sortie standard (dans ce cas, la console).
L'écriture de code pour la compression de fichiers est pratique pour automatiser les tâches et compresser plusieurs fichiers. Si vous n'avez besoin que de compresser quelques fichiers, vous pouvez recourir à des applications telles que WinRar, WinZip, Express Zip et Bandizip.