go example_test 源码

2022-07-15 浏览 (1372)

golang example_test 代码

文件路径:/src/archive/zip/example_test.go

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

相关信息

go 源码目录

相关文章

go fuzz_test 源码

go reader 源码

go reader_test 源码

go register 源码

go struct 源码

go writer 源码

go writer_test 源码

go zip_test 源码

^