go语言

golang中compress/lzw包

2018-12-07  本文已影响0人  ljh123

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)
}
上一篇 下一篇

猜你喜欢

热点阅读