golang如何把一段buffer的内容生成zip文件

在前面的例子中,我们介绍了如何把一个文件压缩成zip文件,包括如何把多个文件、目录一起压缩成一个zip文件。

这里我们介绍如何把一段buffer的内容生成zip文件;例如我们从网络接收外端发送的数据,然后要把收到的数据压缩生成一个一个zip文件。

package main

import (
    "io"
    "log"
    "bytes"
    "io/ioutil"
    "archive/zip"
)

func main() {
    var err error
    var zipBuffer * bytes.Buffer = new(bytes.Buffer)
    var zipWriter * zip.Writer   = zip.NewWriter(zipBuffer)

    // Create entry in zip file
    var zipEntry io.Writer
    zipEntry, err = zipWriter.Create("a.txt")
    if err != nil {
        log.Fatal(err)
    }

    // Write content into zip entry
    _, err = zipEntry.Write([]byte("llllllllllll-1\n"))
    if err != nil {
        log.Fatal(err)
    }

    _, err = zipEntry.Write([]byte("llllllllllll-2\n"))
    if err != nil {
        log.Fatal(err)
    }

    // Make sure to check the error on Close.
    err = zipWriter.Close()
    if err != nil {
        log.Fatal(err)
    }

    // Write the zip file to the disk
    ioutil.WriteFile("a.zip", zipBuffer.Bytes(), 0644)    
}