贝利信息

如何在Golang中解压gzip文件_读取压缩数据

日期:2025-12-24 00:00 / 作者:P粉602998670
在 Go 中解压 gzip 文件需用 compress/gzip 包:先 os.Open 打开 .gz 文件,再 gzip.NewReader 包装为 io.Reader,最后用 bufio.Scanner 等读取;注意默认 Scanner 行长上限 64KB。

在 Go 语言中解压 gzip 文件(即读取 .gz 文件中的原始数据),核心是使用标准库 compress/gzipio 相关包。你不需要手动处理 gzip 格式细节,只需创建一个 *gzip.Reader 包裹底层 reader,然后像读普通文件一样读取即可。

打开并解压 gzip 文件

最常见场景是读取本地 .gz 文件。需先用 os.Open 打开文件,再用 gzip.NewReader 包装:

逐行读取解压后的内容(适合文本日志)

若 gzip 文件内是文本(如 access.log.gz),推荐用 bufio.Scanner 流式读取,内存友好:

一次性读取全部解压数据(适合小文件)

对体积较小的 gzip 文件(如配置、JSON 压缩包),可用 io.ReadAll 简洁获取原始字节:

从网络响应或任意 io.Reader 解压(如 HTTP body)

gzip 不限于文件,任何实现了 io.Reader 的源(如 http.Response.Body)都可解压: