...

Source file src/github.com/xi2/xz/example_test.go

Documentation: github.com/xi2/xz

     1  /*
     2   * Package xz examples
     3   *
     4   * Author: Michael Cross <https://github.com/xi2>
     5   *
     6   * This file has been put into the public domain.
     7   * You can do whatever you want with this file.
     8   */
     9  
    10  package xz_test
    11  
    12  import (
    13  	"bytes"
    14  	"fmt"
    15  	"io"
    16  	"io/ioutil"
    17  	"log"
    18  	"os"
    19  	"path/filepath"
    20  
    21  	"github.com/xi2/xz"
    22  )
    23  
    24  func ExampleNewReader() {
    25  	// load some XZ data into memory
    26  	data, err := ioutil.ReadFile(
    27  		filepath.Join("testdata", "xz-utils", "good-1-check-sha256.xz"))
    28  	if err != nil {
    29  		log.Fatal(err)
    30  	}
    31  	// create an xz.Reader to decompress the data
    32  	r, err := xz.NewReader(bytes.NewReader(data), 0)
    33  	if err != nil {
    34  		log.Fatal(err)
    35  	}
    36  	// write the decompressed data to os.Stdout
    37  	_, err = io.Copy(os.Stdout, r)
    38  	if err != nil {
    39  		log.Fatal(err)
    40  	}
    41  	// Output:
    42  	// Hello
    43  	// World!
    44  }
    45  
    46  func ExampleReader_Multistream() {
    47  	// load some XZ data into memory
    48  	data, err := ioutil.ReadFile(
    49  		filepath.Join("testdata", "xz-utils", "good-1-check-sha256.xz"))
    50  	if err != nil {
    51  		log.Fatal(err)
    52  	}
    53  	// create a MultiReader that will read the data twice
    54  	mr := io.MultiReader(bytes.NewReader(data), bytes.NewReader(data))
    55  	// create an xz.Reader from the MultiReader
    56  	r, err := xz.NewReader(mr, 0)
    57  	if err != nil {
    58  		log.Fatal(err)
    59  	}
    60  	// set Multistream mode to false
    61  	r.Multistream(false)
    62  	// decompress the first stream
    63  	_, err = io.Copy(os.Stdout, r)
    64  	if err != nil {
    65  		log.Fatal(err)
    66  	}
    67  	fmt.Println("Read first stream")
    68  	// reset the XZ reader so it is ready to read the second stream
    69  	err = r.Reset(nil)
    70  	if err != nil {
    71  		log.Fatal(err)
    72  	}
    73  	// set Multistream mode to false again
    74  	r.Multistream(false)
    75  	// decompress the second stream
    76  	_, err = io.Copy(os.Stdout, r)
    77  	if err != nil {
    78  		log.Fatal(err)
    79  	}
    80  	fmt.Println("Read second stream")
    81  	// reset the XZ reader so it is ready to read further streams
    82  	err = r.Reset(nil)
    83  	// confirm that the second stream was the last one
    84  	if err == io.EOF {
    85  		fmt.Println("No more streams")
    86  	}
    87  	// Output:
    88  	// Hello
    89  	// World!
    90  	// Read first stream
    91  	// Hello
    92  	// World!
    93  	// Read second stream
    94  	// No more streams
    95  }
    96  

View as plain text