...
Run Format

Source file src/archive/zip/example_test.go

Documentation: archive/zip

  // Copyright 2012 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 zip_test
  
  import (
  	"archive/zip"
  	"bytes"
  	"compress/flate"
  	"fmt"
  	"io"
  	"log"
  	"os"
  )
  
  func ExampleWriter() {
  	// Create a buffer to write our archive to.
  	buf := new(bytes.Buffer)
  
  	// Create a new zip archive.
  	w := zip.NewWriter(buf)
  
  	// Add some files to the archive.
  	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 licence.\nWrite more examples."},
  	}
  	for _, file := range files {
  		f, err := w.Create(file.Name)
  		if err != nil {
  			log.Fatal(err)
  		}
  		_, err = f.Write([]byte(file.Body))
  		if err != nil {
  			log.Fatal(err)
  		}
  	}
  
  	// Make sure to check the error on Close.
  	err := w.Close()
  	if err != nil {
  		log.Fatal(err)
  	}
  }
  
  func ExampleReader() {
  	// Open a zip archive for reading.
  	r, err := zip.OpenReader("testdata/readme.zip")
  	if err != nil {
  		log.Fatal(err)
  	}
  	defer r.Close()
  
  	// Iterate through the files in the archive,
  	// printing some of their contents.
  	for _, f := range r.File {
  		fmt.Printf("Contents of %s:\n", f.Name)
  		rc, err := f.Open()
  		if err != nil {
  			log.Fatal(err)
  		}
  		_, err = io.CopyN(os.Stdout, rc, 68)
  		if err != nil {
  			log.Fatal(err)
  		}
  		rc.Close()
  		fmt.Println()
  	}
  	// Output:
  	// Contents of README:
  	// This is the source code repository for the Go programming language.
  }
  
  func ExampleWriter_RegisterCompressor() {
  	// Override the default Deflate compressor with a higher compression level.
  
  	// Create a buffer to write our archive to.
  	buf := new(bytes.Buffer)
  
  	// Create a new zip archive.
  	w := zip.NewWriter(buf)
  
  	// Register a custom Deflate compressor.
  	w.RegisterCompressor(zip.Deflate, func(out io.Writer) (io.WriteCloser, error) {
  		return flate.NewWriter(out, flate.BestCompression)
  	})
  
  	// Proceed to add files to w.
  }
  

View as plain text