Skip to main content

archive & compress

archive

文件归档(打包),将多个文件或目录合并为单一归档文件(如.tar.zip),保留文件结构、权限等元信息。

核心子包‌:

  • archive/tar:处理Unix/Linux系统的TAR格式(.tar),支持文件头信息(权限、时间戳等)
  • archive/zip:处理ZIP格式(.zip),跨平台兼容性更强,支持压缩与加密‌

zip 使用

1、Writer: 将多个文件📦进一个 xxx.zip 里。 2、Reader: 从一个 xxx.zip 里读取所有file。 3、在 Writer 时可以指定压缩算法,提高压缩效率,减少体积。

例子见:https://github.com/vadam-zhan/cortana/blob/master/go/archive/zip.go

tar 使用

1、Writer: 将多个文件📦进一个 buf 缓冲区里。 2、Reader: 从缓冲区 里读取所有file。 3、可以将缓冲区换成 xxx.tar 文件,类比 zip 操作。

例子见:https://github.com/vadam-zhan/cortana/blob/master/go/archive/tar.go#L18

compress

数据流压缩,对单个数据流(或文件)进行压缩/解压,减少体积,不处理文件结构。

核心子包‌:

  • compress/gzip:实现GZIP格式(.gz),常用于HTTP响应压缩‌
  • compress/zlib:提供ZLIB压缩算法,适用于网络传输‌
  • compress/flate:DEFLATE算法基础库(GZIP/ZLIB均基于此)

gzip

zlib

flate

典型使用场景:

archive/tar打包,再用compress/gzip压缩 → .tar.gz

维度‌**archive**‌‌**compress**‌
核心目标多文件打包(保留结构)单数据流压缩(减少体积)
输出格式.tar.zip.gz.zlib
元数据处理支持(文件名、权限等)‌无(仅压缩原始字节流)‌
典型组合archive/tar打包,再用compress/gzip压缩 → .tar.gz直接压缩单个文件(如compress/gzip

应用场景:

  • HTTP响应压缩:Gin框架的GZIP中间件‌
  • 数据库存储:压缩大型文本或二进制数据‌