在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()方法来结束压缩。

golang zip压缩文件并定义压缩等级

原文地址: https://www.cveoy.top/t/topic/bEDO 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录