常用功能-打包压缩

常用功能-打包压缩

November 5, 2023
后端开发, Golang
Golang

功能描述: 使用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")
}