...
Run Format

Source file src/compress/gzip/example_test.go

Documentation: compress/gzip

  // Copyright 2016 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 gzip_test
  
  import (
  	"bytes"
  	"compress/gzip"
  	"fmt"
  	"io"
  	"log"
  	"os"
  	"time"
  )
  
  func Example_writerReader() {
  	var buf bytes.Buffer
  	zw := gzip.NewWriter(&buf)
  
  	// Setting the Header fields is optional.
  	zw.Name = "a-new-hope.txt"
  	zw.Comment = "an epic space opera by George Lucas"
  	zw.ModTime = time.Date(1977, time.May, 25, 0, 0, 0, 0, time.UTC)
  
  	_, err := zw.Write([]byte("A long time ago in a galaxy far, far away..."))
  	if err != nil {
  		log.Fatal(err)
  	}
  
  	if err := zw.Close(); err != nil {
  		log.Fatal(err)
  	}
  
  	zr, err := gzip.NewReader(&buf)
  	if err != nil {
  		log.Fatal(err)
  	}
  
  	fmt.Printf("Name: %s\nComment: %s\nModTime: %s\n\n", zr.Name, zr.Comment, zr.ModTime.UTC())
  
  	if _, err := io.Copy(os.Stdout, zr); err != nil {
  		log.Fatal(err)
  	}
  
  	if err := zr.Close(); err != nil {
  		log.Fatal(err)
  	}
  
  	// Output:
  	// Name: a-new-hope.txt
  	// Comment: an epic space opera by George Lucas
  	// ModTime: 1977-05-25 00:00:00 +0000 UTC
  	//
  	// A long time ago in a galaxy far, far away...
  }
  
  func ExampleReader_Multistream() {
  	var buf bytes.Buffer
  	zw := gzip.NewWriter(&buf)
  
  	var files = []struct {
  		name    string
  		comment string
  		modTime time.Time
  		data    string
  	}{
  		{"file-1.txt", "file-header-1", time.Date(2006, time.February, 1, 3, 4, 5, 0, time.UTC), "Hello Gophers - 1"},
  		{"file-2.txt", "file-header-2", time.Date(2007, time.March, 2, 4, 5, 6, 1, time.UTC), "Hello Gophers - 2"},
  	}
  
  	for _, file := range files {
  		zw.Name = file.name
  		zw.Comment = file.comment
  		zw.ModTime = file.modTime
  
  		if _, err := zw.Write([]byte(file.data)); err != nil {
  			log.Fatal(err)
  		}
  
  		if err := zw.Close(); err != nil {
  			log.Fatal(err)
  		}
  
  		zw.Reset(&buf)
  	}
  
  	zr, err := gzip.NewReader(&buf)
  	if err != nil {
  		log.Fatal(err)
  	}
  
  	for {
  		zr.Multistream(false)
  		fmt.Printf("Name: %s\nComment: %s\nModTime: %s\n\n", zr.Name, zr.Comment, zr.ModTime.UTC())
  
  		if _, err := io.Copy(os.Stdout, zr); err != nil {
  			log.Fatal(err)
  		}
  
  		fmt.Print("\n\n")
  
  		err = zr.Reset(&buf)
  		if err == io.EOF {
  			break
  		}
  		if err != nil {
  			log.Fatal(err)
  		}
  	}
  
  	if err := zr.Close(); err != nil {
  		log.Fatal(err)
  	}
  
  	// Output:
  	// Name: file-1.txt
  	// Comment: file-header-1
  	// ModTime: 2006-02-01 03:04:05 +0000 UTC
  	//
  	// Hello Gophers - 1
  	//
  	// Name: file-2.txt
  	// Comment: file-header-2
  	// ModTime: 2007-03-02 04:05:06 +0000 UTC
  	//
  	// Hello Gophers - 2
  }
  

View as plain text