golang中compressflate包

Python012

golang中compressflate包,第1张

官方标准库对flate包的定义是:flate包实现了deflate压缩数据格式,参见 RFC 1951 。gzip包和zlib包实现了对基于deflate的文件格式的访问。

这边什么是deflate?

维基百科给出的解释是: DEFLATE 是同时使用了 LZ77 算法与 哈夫曼编码 (Huffman Coding)的一个 无损数据压缩 算法 。它最初是由 菲尔·卡茨 (Phil Katz)为他的 PKZIP 软件第二版所定义的,后来被 RFC 1951 标准化。

1)func NewReader(r io.Reader) io.ReadCloser

2)func NewReaderDict(r io.Reader, dict []byte) io.ReadCloser

3)func NewWrite(w io.Write, level int) (*Write, error)

4)func NewWriteDict(w io.Writer, level int, dict []byte) (*Writer, error)

5)func (e InternalError) Error() string

6)func (e *ReadError) Error() string

7)func (e *WriteError) Error() string

8)func (w *Writer) Close() error

9)func (w *Writer) Flush() error

9)func (w *Writer) Reset(dst io.Writer)

10)func (w *Writer) Write(data []byte) (n int, err error)

非常好的一个资源链接: https://github.com/astaxie/gopkg/tree/master/compress/flate

如果有很好的资源,欢迎在评论区留言分享

文件分类:文本文件和二进制文件

文本文件可读性好,占用的数据空间大

二进制文件,可读性差,占用的数据空间小

文件存取方式:随机存取和顺序存放

随机存取:操作速度慢,对磁盘的消耗大

顺序存放:操作数据块,对磁盘的消耗小

初级方法

高级方法

在程序和文件之间,添加一个缓冲区,每次程序读取文件内容的时候,先去缓冲区查看,如果需要的内容,直接获取,如果没有再去文件中获取

由于缓冲是在内存当中的,和程序的交互返回速度会非常快,这样可以大大提高程序的性能和速度

缺点:有的数据是只在缓冲中存储的,如果在缓冲释放之前,没有将数据实例化落盘,会导致数据的丢失

按行操作文件对象

将之前的file方法封装起来,可以更加方便的使用

使用gzip.NewReader(文件句柄),来操作压缩文件

示例: file,err := os.OpenFile("main.go", os.O_WRONLY|os.O_WRONLY, 0666)

三个参数,

文件操作方法,需要注意不能冲突

操作完成后,当前目录出现一个text.txt 文件,内容是:hello world,test

这里可以可以考虑使用buffio来实现