|  | // 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 | 
|  | } |