美文网首页go语言
golang中compress/lzw包

golang中compress/lzw包

作者: ljh123 | 来源:发表于2018-12-07 13:35 被阅读0次

    lzw包中提供压缩和解压两种操作
    函数列表:

    func NewReader(r io.Reader, order Order, litWidth int) io.ReadCloser
    func NewWriter(w io.Writer, order Order, litWidth int) io.WriterCloser
    

    (1)压缩
    func NewWriter(w io.Writer, order Order, litWidth int) io.WriterCloser

    参数列表:
    1)w  输出压缩数据的io.Wrier
    2)order lzw数据流的位顺序,有LSB和MSB
    3)litWidth  字面码的位数,必须在[2,8]范围内,一般位8
    返回值:一个io.WriteCloser,可以将压缩的数据写入其下层的w,调用者使用后要将其关闭
    功能说明:
    NewWriter创建一个新的io.WriterCloser。它将数据压缩后写入w。调用者要在写入结束之后调用返回io.WriterCloser的Close函数关闭。litWidth是字面码的位数,必须在[2,8]范围内,一般为8。
    

    (2)解压
    func NewReader(r io.Reader, order Order, litWidth int) io.ReadCloser

    参数列表:
    1)r    待解压的数据
    2)order lzw数据流的位顺序,有LSB和MSB
    3)litWidth  字面码的位数,必须在[2,8]范围内,一般为8
    返回值:一个解压过的io.ReadCloser,调用者使用后要将其关闭
    功能说明:NewReader创建一个新的io.ReadCloser。它从r读取并解压数据。调用者要在读取完之后调用返回io.ReadCloser的Close函数关闭。litWidth是字面码的为数,必须在[2,8]范围内,一般为8.
    

    demo

    package main
    
    import (
        "bytes"
        "compress/lzw"
        "fmt"
        "io"
        "os"
    )
    
    func main() {
        // 一个缓冲区存储压缩的内容
        buf := bytes.NewBuffer(nil)
    
        w := lzw.NewWriter(buf, lzw.LSB, 8)
        // 写入待压缩内容
        w.Write([]byte("compress/flate\n"))
        w.Close()
        fmt.Println(buf)
    
        // 解压
        r := lzw.NewReader(buf, lzw.LSB, 8)
        defer r.Close()
        io.Copy(os.Stdout, r)
    }
    

    相关文章

      网友评论

        本文标题:golang中compress/lzw包

        本文链接:https://www.haomeiwen.com/subject/talthqtx.html