前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Golang语言情怀-第47期 Go 语言标准库翻译 compress/flate

Golang语言情怀-第47期 Go 语言标准库翻译 compress/flate

作者头像
李海彬
发布2021-03-09 10:58:05
4640
发布2021-03-09 10:58:05
举报
文章被收录于专栏:Golang语言社区Golang语言社区

import "compress/flate"

flate包实现了deflate压缩数据格式,参见RFC 1951。gzip包和zlib包实现了对基于deflate的文件格式的访问。

代码语言:javascript
复制
Constants
type CorruptInputError
func (e CorruptInputError) Error() string
type InternalError
func (e InternalError) Error() string
type ReadError
func (e *ReadError) Error() string
type WriteError
func (e *WriteError) Error() string
type Reader
func NewReader(r io.Reader) io.ReadCloser
func NewReaderDict(r io.Reader, dict []byte) io.ReadCloser
type Writer
func NewWriter(w io.Writer, level int) (*Writer, error)
func NewWriterDict(w io.Writer, level int, dict []byte) (*Writer, error)
func (w *Writer) Reset(dst io.Writer)
func (w *Writer) Write(data []byte) (n int, err error)
func (w *Writer) Flush() error
func (w *Writer) Close() error

Constants

代码语言:javascript
复制
const (
    NoCompression = 0
    BestSpeed     = 1
    BestCompression    = 9
    DefaultCompression = -1
)

type CorruptInputError

代码语言:javascript
复制
type CorruptInputError int64

CorruptInputError表示在输入的指定偏移量位置存在损坏。

func (CorruptInputError) Error
代码语言:javascript
复制
func (e CorruptInputError) Error() string

type InternalError

代码语言:javascript
复制
type InternalError string

InternalError表示flate数据自身的错误。

func (InternalError) Error
代码语言:javascript
复制
func (e InternalError) Error() string

type ReadError

代码语言:javascript
复制
type ReadError struct {
    Offset int64 // 错误出现的位置(字节偏移量)
    Err    error // 下层的读取操作返回的错误
}

ReadError代表在读取输入流时遇到的错误。

func (*ReadError) Error
代码语言:javascript
复制
func (e *ReadError) Error() string

type WriteError

代码语言:javascript
复制
type WriteError struct {
    Offset int64 // 错误出现的位置(字节偏移量)
    Err    error // 下层的写入操作返回的错误
}

WriteError代表在写入输出流时遇到的错误。

func (*WriteError) Error
代码语言:javascript
复制
func (e *WriteError) Error() string

type Reader

代码语言:javascript
复制
type Reader interface {
    io.Reader
    io.ByteReader
}

NewReader真正需要的接口。如果提供的Io.Reader没有提供ReadByte方法,NewReader函数会自行添加缓冲。

func NewReader
代码语言:javascript
复制
func NewReader(r io.Reader) io.ReadCloser

NewReader返回一个从r读取并解压数据的io.ReadCloser。调用者有责任在读取完毕后调用返回值的Close方法。

func NewReaderDict
代码语言:javascript
复制
func NewReaderDict(r io.Reader, dict []byte) io.ReadCloser

NewReaderDict类似NewReader,但会使用预设的字典初始化返回的Reader。

返回的Reader表现的好像原始未压缩的数据流以该字典起始(并已经被读取)。NewReaderDict用于读取NewWriterDict压缩的数据。

type Writer

代码语言:javascript
复制
type Writer struct {
    // 内含隐藏或非导出字段
}

Writer将提供给它的数据压缩后写入下层的io.Writer接口。

func NewWriter
代码语言:javascript
复制
func NewWriter(w io.Writer, level int) (*Writer, error)

NewWriter返回一个压缩水平为level的Writer。

和zlib包一样,level的范围是1(BestSpeed)到9 (BestCompression)。值越大,压缩效果越好,但也越慢;level为0表示不尝试做任何压缩,只添加必需的deflate框架;level为-1时会使用默认的压缩水平;如果level在[-1, 9]范围内,error返回值将是nil,否则将返回非nil的错误值。

func NewWriterDict ¶
代码语言:javascript
复制
func NewWriterDict(w io.Writer, level int, dict []byte) (*Writer, error)

NewWriterDict类似NewWriter,但会使用预设的字典初始化返回的Writer。

返回的Writer表现的好像已经将原始、未压缩数据dict(压缩后未产生任何数据的)写入w了,使用w压缩的数据只能被使用同样的字典初始化生成的Reader接口解压缩。(类似加解密的初始向量/密钥)

func (*Writer) Reset
代码语言:javascript
复制
func (w *Writer) Reset(dst io.Writer)

Reset将w重置,丢弃当前的写入状态,并将下层输出目标设为dst。效果上等价于将w设为使用dst和w的压缩水平、字典重新调用NewWriter或NewWriterDict返回的*Writer。

func (*Writer) Write
代码语言:javascript
复制
func (w *Writer) Write(data []byte) (n int, err error)

Write向w写入数据,最终会将压缩后的数据写入下层io.Writer接口。

func (*Writer) Flush
代码语言:javascript
复制
func (w *Writer) Flush() error

Flush将缓冲中的压缩数据刷新到下层io.Writer接口中。

本方法主要用在传输压缩数据的网络连接中,以保证远端的接收者可以获得足够的数据来重构数据报。Flush会阻塞直到所有缓冲中的数据都写入下层io.Writer接口后才返回。如果下层的io.Writetr接口返回一个错误,Flush也会返回该错误。在zlib包的术语中,Flush方法等价于Z_SYNC_FLUSH。

func (*Writer) Close
代码语言:javascript
复制
func (w *Writer) Close() error

Close刷新缓冲并关闭。


参考资料:

Go语言中文文档

http://www.golang.ltd/

Go语言官方文档

https://golang.google.cn/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-02-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言情怀 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Constants
  • type CorruptInputError
    • func (CorruptInputError) Error
    • type InternalError
      • func (InternalError) Error
      • type ReadError
        • func (*ReadError) Error
        • type WriteError
          • func (*WriteError) Error
          • type Reader
            • func NewReader
              • func NewReaderDict
              • type Writer
                • func NewWriter
                  • func NewWriterDict ¶
                    • func (*Writer) Reset
                      • func (*Writer) Write
                        • func (*Writer) Flush
                          • func (*Writer) Close
                          相关产品与服务
                          文件存储
                          文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档