Maison >développement back-end >Golang >Lire le contenu d'un fichier tar sans l'extraire sur le disque
l'éditeur php Strawberry vous présentera aujourd'hui une technique très pratique : lire le contenu d'un fichier tar sans le décompresser sur le disque. Au cours du processus de développement, nous devons souvent traiter des fichiers tar, mais les décompresser sur le disque puis les lire prendra beaucoup de temps et d'espace disque. En utilisant l'extension Archive_Tar de PHP, nous pouvons lire directement le contenu du fichier tar, éviter le fastidieux processus de décompression et améliorer l'efficacité du code. Découvrons ensuite les étapes spécifiques !
J'ai pu parcourir les fichiers dans un fichier tar, mais je n'ai jamais compris comment lire le contenu de ces fichiers sous forme de chaînes. Je veux savoir comment imprimer le contenu d'un fichier sous forme de chaîne ?
Voici mon code
package main import ( "archive/tar" "fmt" "io" "log" "os" "bytes" "compress/gzip" ) func main() { file, err := os.Open("testtar.tar.gz") archive, err := gzip.NewReader(file) if err != nil { fmt.Println("There is a problem with os.Open") } tr := tar.NewReader(archive) for { hdr, err := tr.Next() if err == io.EOF { break } if err != nil { log.Fatal(err) } fmt.Printf("Contents of %s:\n", hdr.Name) } }
Utilisez simplement tar.reader comme io.reader pour chaque fichier que vous souhaitez lire.
tr := tar.newreader(r) // get the next file entry h, _ := tr.next()
Si vous avez besoin du fichier entier sous forme de chaîne :
// read the complete content of the file h.name into the bs []byte bs, _ := ioutil.readall(tr) // convert the []byte to a string s := string(bs)
Si vous avez besoin de lire ligne par ligne, c'est mieux :
// create a Scanner for reading line by line s := bufio.NewScanner(tr) // line reading loop for s.Scan() { // read the current last read line of text l := s.Text() // ...and do something with l } // you should check for error at this point if s.Err() != nil { // handle it }
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!