...

Source file src/compress/gzip/example_test.go

Documentation: compress/gzip

		 1  // Copyright 2016 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 gzip_test
		 6  
		 7  import (
		 8  	"bytes"
		 9  	"compress/gzip"
		10  	"fmt"
		11  	"io"
		12  	"log"
		13  	"os"
		14  	"time"
		15  )
		16  
		17  func Example_writerReader() {
		18  	var buf bytes.Buffer
		19  	zw := gzip.NewWriter(&buf)
		20  
		21  	// Setting the Header fields is optional.
		22  	zw.Name = "a-new-hope.txt"
		23  	zw.Comment = "an epic space opera by George Lucas"
		24  	zw.ModTime = time.Date(1977, time.May, 25, 0, 0, 0, 0, time.UTC)
		25  
		26  	_, err := zw.Write([]byte("A long time ago in a galaxy far, far away..."))
		27  	if err != nil {
		28  		log.Fatal(err)
		29  	}
		30  
		31  	if err := zw.Close(); err != nil {
		32  		log.Fatal(err)
		33  	}
		34  
		35  	zr, err := gzip.NewReader(&buf)
		36  	if err != nil {
		37  		log.Fatal(err)
		38  	}
		39  
		40  	fmt.Printf("Name: %s\nComment: %s\nModTime: %s\n\n", zr.Name, zr.Comment, zr.ModTime.UTC())
		41  
		42  	if _, err := io.Copy(os.Stdout, zr); err != nil {
		43  		log.Fatal(err)
		44  	}
		45  
		46  	if err := zr.Close(); err != nil {
		47  		log.Fatal(err)
		48  	}
		49  
		50  	// Output:
		51  	// Name: a-new-hope.txt
		52  	// Comment: an epic space opera by George Lucas
		53  	// ModTime: 1977-05-25 00:00:00 +0000 UTC
		54  	//
		55  	// A long time ago in a galaxy far, far away...
		56  }
		57  
		58  func ExampleReader_Multistream() {
		59  	var buf bytes.Buffer
		60  	zw := gzip.NewWriter(&buf)
		61  
		62  	var files = []struct {
		63  		name		string
		64  		comment string
		65  		modTime time.Time
		66  		data		string
		67  	}{
		68  		{"file-1.txt", "file-header-1", time.Date(2006, time.February, 1, 3, 4, 5, 0, time.UTC), "Hello Gophers - 1"},
		69  		{"file-2.txt", "file-header-2", time.Date(2007, time.March, 2, 4, 5, 6, 1, time.UTC), "Hello Gophers - 2"},
		70  	}
		71  
		72  	for _, file := range files {
		73  		zw.Name = file.name
		74  		zw.Comment = file.comment
		75  		zw.ModTime = file.modTime
		76  
		77  		if _, err := zw.Write([]byte(file.data)); err != nil {
		78  			log.Fatal(err)
		79  		}
		80  
		81  		if err := zw.Close(); err != nil {
		82  			log.Fatal(err)
		83  		}
		84  
		85  		zw.Reset(&buf)
		86  	}
		87  
		88  	zr, err := gzip.NewReader(&buf)
		89  	if err != nil {
		90  		log.Fatal(err)
		91  	}
		92  
		93  	for {
		94  		zr.Multistream(false)
		95  		fmt.Printf("Name: %s\nComment: %s\nModTime: %s\n\n", zr.Name, zr.Comment, zr.ModTime.UTC())
		96  
		97  		if _, err := io.Copy(os.Stdout, zr); err != nil {
		98  			log.Fatal(err)
		99  		}
	 100  
	 101  		fmt.Print("\n\n")
	 102  
	 103  		err = zr.Reset(&buf)
	 104  		if err == io.EOF {
	 105  			break
	 106  		}
	 107  		if err != nil {
	 108  			log.Fatal(err)
	 109  		}
	 110  	}
	 111  
	 112  	if err := zr.Close(); err != nil {
	 113  		log.Fatal(err)
	 114  	}
	 115  
	 116  	// Output:
	 117  	// Name: file-1.txt
	 118  	// Comment: file-header-1
	 119  	// ModTime: 2006-02-01 03:04:05 +0000 UTC
	 120  	//
	 121  	// Hello Gophers - 1
	 122  	//
	 123  	// Name: file-2.txt
	 124  	// Comment: file-header-2
	 125  	// ModTime: 2007-03-02 04:05:06 +0000 UTC
	 126  	//
	 127  	// Hello Gophers - 2
	 128  }
	 129  

View as plain text