Les archives regroupent plusieurs fichiers dans un seul format, généralement zip, tar ou rar. Les fichiers d'archive peuvent également utiliser la compression pour réduire la taille totale du fichier.
Vous pouvez utiliser des archives pour distribuer des logiciels et des données, y compris des pages Web. Vous pouvez également archiver votre application, avec tous ses fichiers et dépendances, pour que les utilisateurs puissent la télécharger et l'installer.
Le package d'archives de Go vous permet de créer et d'extraire des archives aux formats tar et zip.
Paquet d'archives de Go
Allez fournit archive packages pour travailler avec différents formats d'archives. Vous pouvez utiliser le zipper et le goudron packages pour créer, lire et écrire des fichiers d'archive dans ces formats. Les deux packages prennent en charge divers algorithmes de compression via une API facile à utiliser.
Voici comment vous pouvez importer les packages zip et tar dans vos fichiers Go :
importer (
"archiver/compresser"
"archive/tar"
)
Après avoir importé les packages, vous pouvez les utiliser pour créer et manipuler des fichiers d'archive.
Création et ajout de fichiers aux archives tar
Le le goudron le paquet fonctionne avec tar archives des formats tar et tar.gz, y compris la prise en charge de la lecture et de l'écriture de fichiers avec des en-têtes étendus PAX.
Le paquet tar fournit un Nouvel écrivain fonction de création de nouvelles archives tar. NewWriter prend dans un io. Écrivain instance d'interface qui peut être un fichier ou un tampon mémoire et renvoie un pointeur vers le goudron. Écrivain structure.
emballer principal
importer (
"archive/tar"
"os"
)fonctionprincipal() {
// Crée un nouveau fichier
fichier, _ := os. Créer("monarchive.tar")
reporter déposer. Fermer()
// Créer une nouvelle archive tar
tarWriter := tar. NewWriter (fichier)
reporter tarWriter. Fermer()
}
Le Créer fonction de la os package crée un nouveau fichier tar. Le le goudron. Nouvel écrivain La fonction prend un fichier et crée une nouvelle archive.
Vous pouvez ajouter des fichiers à l'archive tar avec le WriteHeader et Écrire les fonctions. La fonction WriteHeader prend une le goudron. Entête structure comme argument. Celui-ci contient les métadonnées du fichier, telles que le nom du fichier, la taille et les bits d'autorisation. La fonction Write écrit le contenu d'un fichier dans l'archive.
importer (
"archive/tar"
"fmt"
"io"
"enregistrer"
"os"
)fonctionprincipal() {
// Crée un nouveau fichier
fichier, _ := os. Créer("monarchive.tar")
fichier, _ = os. Créer("message.txt")
reporter déposer. Fermer()// Créer une nouvelle archive tar
tarWriter := tar. NewWriter (fichier)
reporter tarWriter. Fermer()
// Ajouter un fichier à l'archive
fichierAjouter, _ := os. Ouvrir("fichier1.txt")
reporter fichierAjouter. Fermer()
fileInfo, _ := fileToAdd. Stat()
en-tête, _ := tar. FileInfoHeader (fichierInfo, "")
tarWriter. WriteHeader (en-tête)
_, _ = io. Copier (tarWriter, fileToAdd)
fmt. Imprimerln("Opération d'archivage TAR terminée")
}
Le programme crée de nouveaux fichiers tar et texte avec les Créer fonction de la os package et une nouvelle archive tar avec le Nouvel écrivain, avant d'ajouter le fichier à l'archive.
Le Ouvrir La fonction ouvre le fichier à ajouter à l'archive. Notez que vous aurez besoin d'un fichier nommé fichier1.txt dans votre répertoire de travail pour exécuter ce programme avec succès.
Vous pouvez utiliser le Statistique fonction d'une instance de fichier pour récupérer les métadonnées dont vous aurez besoin pour l'en-tête tar. Passer son résultat à FileInfoHeader, puis passez ce résultat au WriteHeader fonction pour configurer le fichier tar. Enfin, copiez le fichier dans l'archive en utilisant io. Copie.
Extraction de fichiers à partir d'archives tar
Vous pouvez utiliser le Nouveaulecteur fonction pour lire le contenu du fichier d'archive tar. La fonction NewReader prend en compte un io. Lecteur interface qui peut être un fichier ou une mémoire tampon. Il renvoie un pointeur vers un le goudron. Lecteur structure.
importer (
"archive/tar"
"io"
"os"
)fonctionprincipal() {
// Ouvre l'archive tar
fichier, _ := os. Ouvrir("monarchive.tar")
reporter déposer. Fermer()// Créer un nouveau lecteur tar
tarReader := tar. NouveauReader (fichier)// Itération sur les fichiers de l'archive
pour {
en-tête, err := tarReader. Suivant()si erreur == io. EOF {
casser
}
// Extraire le fichier
outFile, _ := os. Créer (en-tête. Nom)
reporter outFile. Fermer()
_, _ = io. Copier (outFile, tarReader)
}
}
Le boucle for infinie traverse l'instance de lecteur tar et extrait les fichiers en copiant chaque fichier avec le io paquets Copie fonction.
Créer et ajouter des fichiers aux archives Zip
Vous pouvez créer une nouvelle archive zip avec le Nouvel écrivain fonction de la zipper emballer. La fonction NewWriter prend une instance de fichier et renvoie un écrivain zip.
importer (
"archiver/compresser"
"os"
)fonctionprincipal() {
// Crée un nouveau fichier
fichier, erreur := os. Créer("archive.zip")si erreur != néant {
panique(se tromper)
}reporter déposer. Fermer()
// Créer un nouvel écrivain zip
zipWriter := zip. NewWriter (fichier)
reporter zipWriter. Fermer()
}
Le zipWriter variable stocke un nouveau Écrivain instance renvoyée par NewWriter.
Vous pouvez ajouter des fichiers à vos archives zip avec le Créer fonction de l'instance de Writer. La fonction Créer prend le nom du fichier. Vous pouvez également utiliser le Écrire fonction de l'instance de fichier zip pour écrire des données dans des fichiers d'archives zip.
importer (
"archiver/compresser"
"os"
)fonctionprincipal() {
// Créer de nouveaux fichiers
fichier, erreur := os. Créer("archive.zip")
fichier, erreur = os. Créer("fichier1.txt")
fichier, erreur = os. Créer("fichier2.txt")si erreur != néant {
panique(se tromper)
}reporter déposer. Fermer()
// Créer un nouvel écrivain zip
zipWriter := zip. NewWriter (fichier)
reporter zipWriter. Fermer()// Ajouter des fichiers à l'archive
fichier1, err := zipWriter. Créer("fichier1.txt")si erreur != néant {
panique(se tromper)
}fichier2, err := zipWriter. Créer("fichier2.txt")
si erreur != néant {
panique(se tromper)
}
// Ecrire des données dans les fichiers de l'archive
fichier1.Ecrire([]octet("Bonjour le monde!"))
fichier2.Ecrire([]octet("Au revoir le monde!"))
fmt. Imprimerln("opération d'archivage zip terminée")
}
La fonction principale commence par utiliser Créer pour créer un nouveau fichier zip et deux fichiers texte. Il crée ensuite deux écrivains pour ajouter les deux fichiers texte à l'archive. Le Écrire fonction de chaque instance de fichier écrit des messages dans chacun des fichiers de l'archive.
Extraction de fichiers à partir d'archives Zip
Vous pouvez extraire un fichier zip existant en le lisant avec le OpenReader fonction, puis en parcourant son contenu et en copiant les fichiers avec la io emballer.
importer (
"archiver/compresser"
"fmt"
"io"
"os"
)fonctionprincipal() {
// Ouvrir l'archive
zipReader, erreur := zip. OuvrirReader("archive.zip")si erreur != néant {
panique(se tromper)
}reporter zipReader. Fermer()
// Extraire les fichiers de l'archive
pour _, fichier := gamme zipReader. Déposer {
zippedFile, erreur := fichier. Ouvrir()si erreur != néant {
panique(se tromper)
}reporter fichier zippé. Fermer()
// Crée un nouveau fichier avec le même nom que le fichier compressé
extraitFichier, err := os. Créer (fichier. Nom)si erreur != néant {
panique(se tromper)
}reporter fichier extrait. Fermer()
// Copie les données du fichier compressé vers le nouveau fichier
_, erreur = io. Copie (fichier extrait, fichier compressé)si erreur != néant {
panique(se tromper)
}
fmt. Imprimerf("%s extrait\n", déposer. Nom)
}
}
Le OpenReader la fonction lit les archives zip. Le OpenReader La fonction accepte le nom du fichier zip comme argument et renvoie une instance de lecteur de fichier zip. Le pour la plage loop parcourt le contenu des fichiers dans l'instance du lecteur. Il crée un nouveau fichier portant le même nom que le fichier d'origine et copie le contenu du fichier extrait dans le nouveau fichier à l'aide de la io. Copie fonction.
Décompressez manuellement ou par programme - c'est à vous de décider
Décompresser les fichiers par programmation est pratique si vous avez de nombreux fichiers ou archives à décompresser. Vous pouvez également intégrer la fonctionnalité d'archivage dans votre application principale.
Dans d'autres cas, il peut être préférable d'utiliser des applications existantes. Vous pouvez utiliser des applications intégrées ou tierces pour décompresser les archives sous Windows, macOS et Linux.