Go语言学习: golang 里的 zip with password 操作

压缩文件并带密码
更新于: 2024-11-19 14:36:11

安装

go get -u github.com/alexmullins/zip

main.go

package main

import (
	"bytes"
	"io"
	"log"
	"os"

	"github.com/alexmullins/zip"
)

func main() {
	contents := []byte("Hello World")
	fzip, err := os.Create(`./test.zip`)
	if err != nil {
		log.Fatalln(err)
	}
	zipw := zip.NewWriter(fzip)
	defer zipw.Close()
	w, err := zipw.Encrypt(`test.txt`, `golang`)
	if err != nil {
		log.Fatal(err)
	}
	_, err = io.Copy(w, bytes.NewReader(contents))
	if err != nil {
		log.Fatal(err)
	}
	zipw.Flush()
}

已经有文件的

package main

import (
	"io"
	"log"
	"os"

	"github.com/alexmullins/zip"
)

func main() {
	// 打开已有的文件
	file, err := os.Open("hello.txt")
	if err != nil {
		log.Fatalln(err)
	}
	defer file.Close()

	// 创建压缩文件
	fzip, err := os.Create("test.zip")
	if err != nil {
		log.Fatalln(err)
	}
	defer fzip.Close()

	// 创建 zip 写入器
	zipw := zip.NewWriter(fzip)
	defer zipw.Close()

	// 创建加密的 zip 文件条目
	w, err := zipw.Encrypt("hello.txt", "golang")
	if err != nil {
		log.Fatalln(err)
	}

	// 将文件内容写入 zip 条目
	if _, err := io.Copy(w, file); err != nil {
		log.Fatalln(err)
	}
}