使用compress/gzip包可实现Go语言文件压缩,需打开源文件并创建.gz目标文件,通过gzip.NewWriter包装写入器,将源内容拷贝至写入器,并调用Close()确保尾部信息写入。

在Go语言中,使用 compress/gzip 包可以轻松实现文件的GZIP压缩。这个包通常与 os 和 bufio 等标准库配合使用,完成从读取原始文件到生成压缩文件的流程。
要压缩一个文件,主要步骤如下:
package main
import (
"bufio"
"compress/gzip"
"io"
"os"
)
func compressFile(src, dst string) error {
// 打开源文件
inputFile, err := os.Open(src)
if err != nil {
return err
}
defer inputFile.Close()
// 创建目标 .gz 文件
outputFile, err := os.Create(dst)
if err != nil {
return err
}
defer outputFile.Close()
// 使用 bufio 提升I/O性能
writer := bufio.NewWriter(outputFile)
defer writer.Flush()
// 构建gzip写入器
gzWriter := gzip.NewWriter(writer)
defer gzWriter.Close()
// 将源文件内容拷贝到gzip写入器
_, err = io.Copy(gzWriter, inputFile)
return err
}
func main() {
err := compressFile("example.txt", "example.txt.gz")
if err != nil {
panic(err)
}
<strong>println("文件压缩完成")</strong>
}
使用 compress/gzip 时有几个关键点需要注意:
gzip.NewWriterLevel 可以指定压缩等级,例如:
立即学习“go语言免费学习笔记(深入)”;
gzWriter, err := gzip.NewWriterLevel(writer, gzip.BestCompression)
if err != nil {
return err
}
可用等级包括:
以上就是Golang如何使用compress/gzip实现文件压缩的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号