Golang est un langage de programmation puissant qui fournit de nombreuses bibliothèques pratiques et bibliothèques de classes pour aider les développeurs à développer des applications efficaces. Parmi elles, lors du traitement de fichiers compressés, Golang fournit de nombreuses bibliothèques utiles pour nous aider à compresser et décompresser facilement les fichiers.
Dans cet article, nous présenterons comment Golang décompresse les fichiers.
Les packages archive/tar et archive/zip de la bibliothèque standard Golang fournissent des fonctions pour compresser et décompresser les fichiers tar et zip.
Jetons un coup d'œil à un exemple de décompression d'un fichier zip à l'aide du package archive/zip :
package main import ( "archive/zip" "fmt" "io" "os" ) func main() { zipReader, err := zip.OpenReader("example.zip") if err != nil { fmt.Println(err) os.Exit(1) } defer zipReader.Close() for _, file := range zipReader.File { fmt.Println("Extracting ", file.Name) dest, err := os.Create(file.Name) if err != nil { fmt.Println(err) os.Exit(1) } defer dest.Close() src, err := file.Open() if err != nil { fmt.Println(err) os.Exit(1) } defer src.Close() _, err = io.Copy(dest, src) if err != nil { fmt.Println(err) os.Exit(1) } } }
Lorsque nous exécutons ce code, il extraira tout le contenu du fichier example.zip et le copiera individuellement dans le répertoire actuel.
De même, en utilisant le package archive/tar, nous pouvons décompresser le fichier tar comme indiqué ci-dessous :
package main import ( "fmt" "io" "os" "archive/tar" ) func main() { tarFile, err := os.Open("example.tar") if err != nil { fmt.Println(err) os.Exit(1) } defer tarFile.Close() tarReader := tar.NewReader(tarFile) for true { header, err := tarReader.Next() if err == io.EOF { break } if err != nil { fmt.Println(err) os.Exit(1) } fmt.Println("Extracting ", header.Name) switch header.Typeflag { case tar.TypeDir: err = os.Mkdir(header.Name, 0755) if err != nil { fmt.Println(err) os.Exit(1) } case tar.TypeReg: dest, err := os.Create(header.Name) if err != nil { fmt.Println(err) os.Exit(1) } defer dest.Close() _, err = io.Copy(dest, tarReader) if err != nil { fmt.Println(err) os.Exit(1) } default: fmt.Printf("Unable to extract %s\n", header.Name) } } }
Ce code extraira tout le contenu du fichier example.tar et le copiera respectivement dans le répertoire ou le fichier approprié.
En plus des packages archive/tar et archive/zip de la bibliothèque standard, il existe d'autres packages qui peuvent être utilisés pour décompresser des fichiers. L'une des bibliothèques tierces les plus connues est le package gzip.
Notre exemple de code pour décompresser un fichier gzip à l'aide du package gzip ressemble à ceci :
package main import ( "fmt" "io" "os" "compress/gzip" ) func main() { inFile, err := os.Open("example.gz") if err != nil { fmt.Println(err) os.Exit(1) } defer inFile.Close() gzReader, err := gzip.NewReader(inFile) if err != nil { fmt.Println(err) os.Exit(1) } defer gzReader.Close() dest, err := os.Create("example") if err != nil { fmt.Println(err) os.Exit(1) } defer dest.Close() _, err = io.Copy(dest, gzReader) if err != nil { fmt.Println(err) os.Exit(1) } }
Ce code extraira et décompressera tout le contenu du fichier exemple.gz et l'écrira dans un fichier nommé fichier exemple.
Dans cet article, nous avons appris à décompresser des fichiers à l'aide des packages archive/tar et archive/zip de la bibliothèque standard et du package gzip des bibliothèques tierces. Comprendre comment utiliser ces bibliothèques vous aidera à gérer et à travailler plus facilement avec des fichiers compressés.
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!