1 // Copyright 2012 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 zip_test 6 7 import ( 8 "archive/zip" 9 "bytes" 10 "fmt" 11 "io" 12 "log" 13 "os" 14 ) 15 16 func ExampleWriter() { 17 // Create a buffer to write our archive to. 18 buf := new(bytes.Buffer) 19 20 // Create a new zip archive. 21 w := zip.NewWriter(buf) 22 23 // Add some files to the archive. 24 var files = []struct { 25 Name, Body string 26 }{ 27 {"readme.txt", "This archive contains some text files."}, 28 {"gopher.txt", "Gopher names:\nGeorge\nGeoffrey\nGonzo"}, 29 {"todo.txt", "Get animal handling licence.\nWrite more examples."}, 30 } 31 for _, file := range files { 32 f, err := w.Create(file.Name) 33 if err != nil { 34 log.Fatal(err) 35 } 36 _, err = f.Write([]byte(file.Body)) 37 if err != nil { 38 log.Fatal(err) 39 } 40 } 41 42 // Make sure to check the error on Close. 43 err := w.Close() 44 if err != nil { 45 log.Fatal(err) 46 } 47 } 48 49 func ExampleReader() { 50 // Open a zip archive for reading. 51 r, err := zip.OpenReader("testdata/readme.zip") 52 if err != nil { 53 log.Fatal(err) 54 } 55 defer r.Close() 56 57 // Iterate through the files in the archive, 58 // printing some of their contents. 59 for _, f := range r.File { 60 fmt.Printf("Contents of %s:\n", f.Name) 61 rc, err := f.Open() 62 if err != nil { 63 log.Fatal(err) 64 } 65 _, err = io.CopyN(os.Stdout, rc, 68) 66 if err != nil { 67 log.Fatal(err) 68 } 69 rc.Close() 70 fmt.Println() 71 } 72 // Output: 73 // Contents of README: 74 // This is the source code repository for the Go programming language. 75 } 76