golang实现gzip
在Go语言中,可以使用compress/gzip包来实现gzip压缩和解压缩。
以下是一个简单的示例代码,演示了如何使用gzip包进行压缩和解压缩:
package main
import (
"compress/gzip"
"io"
"log"
"os"
)
func main() {
// 压缩文件
compressFile("input.txt", "output.txt.gz")
// 解压缩文件
decompressFile("output.txt.gz", "output.txt")
}
// 压缩文件
func compressFile(inputFile, outputFile string) {
// 打开输入文件
input, err := os.Open(inputFile)
if err != nil {
log.Fatal(err)
}
defer input.Close()
// 创建输出文件
output, err := os.Create(outputFile)
if err != nil {
log.Fatal(err)
}
defer output.Close()
// 创建gzip.Writer
gzipWriter := gzip.NewWriter(output)
defer gzipWriter.Close()
// 将输入文件内容写入gzip.Writer
_, err = io.Copy(gzipWriter, input)
if err != nil {
log.Fatal(err)
}
log.Println("文件压缩完成")
}
// 解压缩文件
func decompressFile(inputFile, outputFile string) {
// 打开输入文件
input, err := os.Open(inputFile)
if err != nil {
log.Fatal(err)
}
defer input.Close()
// 创建gzip.Reader
gzipReader, err := gzip.NewReader(input)
if err != nil {
log.Fatal(err)
}
defer gzipReader.Close()
// 创建输出文件
output, err := os.Create(outputFile)
if err != nil {
log.Fatal(err)
}
defer output.Close()
// 将gzip.Reader内容写入输出文件
_, err = io.Copy(output, gzipReader)
if err != nil {
log.Fatal(err)
}
log.Println("文件解压缩完成")
}
在上述示例代码中,compressFile函数用于压缩文件,decompressFile函数用于解压缩文件。你可以将需要压缩的文件名和输出文件名作为参数传递给这两个函数。压缩后的文件将以.gz为扩展名。
请注意,示例代码中使用了log.Fatal函数来处理错误。在实际应用中,你可能需要根据具体情况进行错误处理。
原文地址: https://www.cveoy.top/t/topic/iaEu 著作权归作者所有。请勿转载和采集!