Source file
src/archive/tar/example_test.go
1
2
3
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
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
45 tr := tar.NewReader(&buf)
46 for {
47 hdr, err := tr.Next()
48 if err == io.EOF {
49 break
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
62
63
64
65
66
67
68
69
70
71 }
72
View as plain text