...

Source file src/archive/tar/example_test.go

Documentation: archive/tar

		 1  // Copyright 2013 The Go Authors. All rights reserved.
		 2  // Use of this source code is governed by a BSD-style
		 3  // license that can be found in the LICENSE file.
		 4  
		 5  package tar_test
		 6  
		 7  import (
		 8  	"archive/tar"
		 9  	"bytes"
		10  	"fmt"
		11  	"io"
		12  	"log"
		13  	"os"
		14  )
		15  
		16  func Example_minimal() {
		17  	// Create and add some files to the archive.
		18  	var buf bytes.Buffer
		19  	tw := tar.NewWriter(&buf)
		20  	var files = []struct {
		21  		Name, Body string
		22  	}{
		23  		{"readme.txt", "This archive contains some text files."},
		24  		{"gopher.txt", "Gopher names:\nGeorge\nGeoffrey\nGonzo"},
		25  		{"todo.txt", "Get animal handling license."},
		26  	}
		27  	for _, file := range files {
		28  		hdr := &tar.Header{
		29  			Name: file.Name,
		30  			Mode: 0600,
		31  			Size: int64(len(file.Body)),
		32  		}
		33  		if err := tw.WriteHeader(hdr); err != nil {
		34  			log.Fatal(err)
		35  		}
		36  		if _, err := tw.Write([]byte(file.Body)); err != nil {
		37  			log.Fatal(err)
		38  		}
		39  	}
		40  	if err := tw.Close(); err != nil {
		41  		log.Fatal(err)
		42  	}
		43  
		44  	// Open and iterate through the files in the archive.
		45  	tr := tar.NewReader(&buf)
		46  	for {
		47  		hdr, err := tr.Next()
		48  		if err == io.EOF {
		49  			break // End of archive
		50  		}
		51  		if err != nil {
		52  			log.Fatal(err)
		53  		}
		54  		fmt.Printf("Contents of %s:\n", hdr.Name)
		55  		if _, err := io.Copy(os.Stdout, tr); err != nil {
		56  			log.Fatal(err)
		57  		}
		58  		fmt.Println()
		59  	}
		60  
		61  	// Output:
		62  	// Contents of readme.txt:
		63  	// This archive contains some text files.
		64  	// Contents of gopher.txt:
		65  	// Gopher names:
		66  	// George
		67  	// Geoffrey
		68  	// Gonzo
		69  	// Contents of todo.txt:
		70  	// Get animal handling license.
		71  }
		72  

View as plain text