| // Copyright 2013 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| package tar_test | |
| import ( | |
| "archive/tar" | |
| "bytes" | |
| "fmt" | |
| "io" | |
| "log" | |
| "os" | |
| ) | |
| func Example_minimal() { | |
| // Create and add some files to the archive. | |
| var buf bytes.Buffer | |
| tw := tar.NewWriter(&buf) | |
| var files = []struct { | |
| Name, Body string | |
| }{ | |
| {"readme.txt", "This archive contains some text files."}, | |
| {"gopher.txt", "Gopher names:\nGeorge\nGeoffrey\nGonzo"}, | |
| {"todo.txt", "Get animal handling license."}, | |
| } | |
| for _, file := range files { | |
| hdr := &tar.Header{ | |
| Name: file.Name, | |
| Mode: 0600, | |
| Size: int64(len(file.Body)), | |
| } | |
| if err := tw.WriteHeader(hdr); err != nil { | |
| log.Fatal(err) | |
| } | |
| if _, err := tw.Write([]byte(file.Body)); err != nil { | |
| log.Fatal(err) | |
| } | |
| } | |
| if err := tw.Close(); err != nil { | |
| log.Fatal(err) | |
| } | |
| // Open and iterate through the files in the archive. | |
| tr := tar.NewReader(&buf) | |
| for { | |
| hdr, err := tr.Next() | |
| if err == io.EOF { | |
| break // End of archive | |
| } | |
| if err != nil { | |
| log.Fatal(err) | |
| } | |
| fmt.Printf("Contents of %s:\n", hdr.Name) | |
| if _, err := io.Copy(os.Stdout, tr); err != nil { | |
| log.Fatal(err) | |
| } | |
| fmt.Println() | |
| } | |
| // Output: | |
| // Contents of readme.txt: | |
| // This archive contains some text files. | |
| // Contents of gopher.txt: | |
| // Gopher names: | |
| // George | |
| // Geoffrey | |
| // Gonzo | |
| // Contents of todo.txt: | |
| // Get animal handling license. | |
| } | |