archive/zip包提供了zip归档文件的读写操作。
在对zip包进行介绍之前,先说明一下zip和tar的区别。
二者都是对文件进行归档,不进行压缩。并且二者使用平台不同,对于 Windows 平台而言,最常用的格式是 zip 和 rar,国内大多数是用 rar,国外大多数是用 zip。而对于类 Unix 平台而言,常用的格式是 tar 和 tar.gz,zip 比较少一些,rar 则几乎没有。
zip 格式是开放且免费的,所以广泛使用在 Windows、Linux、MacOS 平台,要说 zip 有什么缺点的话,就是它的压缩率并不是很高,不如 rar及 tar.gz 等格式。
严格的说,tar 只是一种打包格式,并不对文件进行压缩,主要是为了便于文件的管理,所以打包后的文档大小一般远远大于 zip 和 tar.gz,但这种格式也有很明显的优点,例如打包速度非常快,打包时 CPU 占用率也很低,因为不需要压缩嘛。
接下来对zip包进行讲解。
zip包不支持跨硬盘进行操作为了向下兼容,FileHeader同时拥有32位和64位的Size字段。64位字段总是包含正确的值,对普通格式的档案未见它们的值是相同的。对zip64格式的档案文件32位字段将是0xffffffff,必须使用64位字段。
Constants
压缩算法
const (
Store uint16 = 0
Deflate uint16 = 8
)
Variables
错误变量
var (
ErrFormat = errors.New("zip: not a valid zip file")
ErrAlgorithm = errors.New("zip: unsupported compression algorithm")
ErrChecksum = errors.New("zip: checksum error")func_name
)
func RegisterCompressor(method uint16, comp Compressor) //使用指定的方法id生成一个Compressor的类型函数。常用的方法Store和Deflate是内建的
func RegisterDecompressor(method uint16, d Decompressor)//使用指定的方法id注册一个Decompressor类型的函数
type Compressor
type Compressor func(io.Wri