Lecture du contenu des fichiers Tar sous forme de chaînes
Lorsque vous travaillez avec des fichiers tar, vous pouvez rencontrer le besoin d'accéder au contenu de leurs fichiers sans les décompresser sur le disque. Pour ce faire, vous pouvez exploiter la fonctionnalité fournie par le package archive/tar dans la bibliothèque standard Go.
Revoyons l'exemple de code que vous avez fourni :
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) } }
Le but est de modifier ce code pour lire le contenu des fichiers dans le fichier tar et les imprimer sous forme de chaînes. Pour y parvenir, nous pouvons traiter le tar.Reader comme un io.Reader pour chaque fichier auquel nous voulons accéder.
Tout d'abord, nous obtiendrons l'entrée de fichier suivante en utilisant h, _ := tr.Next( ). Ensuite, nous pouvons lire tout le contenu du fichier dans une tranche d'octets avec bs, _ := ioutil.ReadAll(tr) et le convertir en chaîne avec s := string(bs).
Alternativement, si vous avez besoin de lire le contenu ligne par ligne, vous pouvez utiliser un scanner comme suit :
s := bufio.NewScanner(tr) for s.Scan() { l := s.Text() // ...do something with the line l } if s.Err() != nil { // handle any errors encountered while reading }
En employant ces techniques, vous pouvez accéder et lire de manière transparente le contenu des fichiers tar comme chaînes, vous permettant de travailler et de traiter efficacement leurs données.
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!