golang zip压缩文件并定义压缩等级
在Go语言中,可以使用archive/zip包来压缩文件。下面是一个示例代码,展示如何压缩文件并定义压缩等级:
package main
import (
"archive/zip"
"fmt"
"io"
"os"
)
func main() {
// 创建压缩文件
file, err := os.Create("example.zip")
if err != nil {
fmt.Println(err)
return
}
defer file.Close()
// 创建zip.Writer
zipWriter := zip.NewWriter(file)
// 设置压缩等级
zipWriter.RegisterCompressor(zip.Deflate, func(out io.Writer) (io.WriteCloser, error) {
return zip.NewWriter(out).SetLevel(9)
})
// 添加文件到压缩文件中
fileToAdd, err := os.Open("file.txt")
if err != nil {
fmt.Println(err)
return
}
defer fileToAdd.Close()
fileInfo, err := fileToAdd.Stat()
if err != nil {
fmt.Println(err)
return
}
header, err := zip.FileInfoHeader(fileInfo)
if err != nil {
fmt.Println(err)
return
}
header.Name = "file.txt"
header.Method = zip.Deflate
writer, err := zipWriter.CreateHeader(header)
if err != nil {
fmt.Println(err)
return
}
_, err = io.Copy(writer, fileToAdd)
if err != nil {
fmt.Println(err)
return
}
// 结束压缩
err = zipWriter.Close()
if err != nil {
fmt.Println(err)
return
}
fmt.Println("Compression completed successfully.")
}
在上面的示例代码中,我们使用zipWriter.RegisterCompressor()方法来定义压缩等级,将压缩等级设置为9,这是最高等级的压缩。然后,我们使用zipWriter.CreateHeader()方法来创建压缩文件头,并将文件添加到压缩文件中。最后,我们使用zipWriter.Close()方法来结束压缩。
原文地址: https://www.cveoy.top/t/topic/bEDO 著作权归作者所有。请勿转载和采集!