golang中compress/lzw包

laijh · · 1271 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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)
}

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:laijh

查看原文:golang中compress/lzw包

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1271 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传