功能描述:
使用go语言实现打包压缩功能。

实现这个功能不需要引入第三方库,直接使用go语言自带的archive/zip库即可。

下面直接给出实例代码:

package main

import (
    "archive/zip"
    "io"
    "log"
    "os"
)

func zipfiles(zipfilename string, files []string) error {
    newfile, err := os.Create(zipfilename)

    if err != nil {
        return err
    }

    defer newfile.Close()

    zwriter := zip.NewWriter(newfile)

    defer zwriter.Close()

    for _, file := range files {

        temp, err := os.Open(file)

        if err != nil {
            return err
        }

        defer temp.Close()

        info, err := temp.Stat()

        if err != nil {
            return err
        }

        header, err := zip.FileInfoHeader(info)

        if err != nil {
            return err
        }

        header.Name = file

        header.Method = zip.Deflate

        writer, err := zwriter.CreateHeader(header)

        if err != nil {
            return err
        }

        _, err = io.Copy(writer, temp)

        if err != nil {
            return err
        }

    }

    return nil
}

func main() {
    // 待压缩文件列表
    files := []string{"./zipdemo/test1.txt", "./zipdemo/test2.txt"}

    // 输出的压缩包文件名
    output := "output.zip"

    // 执行压缩
    err := zipfiles(output, files)
    if err != nil {
        log.Fatal(err)
        return
    }

    log.Println("success")
}

本文由mdnice多平台发布


guoqiang
1 声望0 粉丝

从事开发工作多年,使用过php和golang,目前主要使用golang开发后端服务。