建立帶密碼的zip壓縮包
package main
import (
"io"
"log"
"os"
"path/filepath"
"github.com/alexmullins/zip"
)
func init() {
log.SetFlags(log.Lshortfile | log.LstdFlags)
}
func main() {
fzip, err := os.Create("./main.zip")
if err != nil {
log.Fatalln(err)
}
defer fzip.Close()
zipw := zip.NewWriter(fzip)
defer zipw.Close()
header := &zip.FileHeader{
Name: filepath.Base("main.go"),
Method: zip.Deflate,
Flags: 0x800, // 設定檔名稱編碼為UTF-8,避免在Windows上解壓後檔名出現亂碼
}
header.SetPassword("password")
w, err := zipw.CreateHeader(header)
if err != nil {
log.Fatalln(err)
}
// 開啟要新增到壓縮包中的原檔案
f, err := os.Open("./main.go")
if err != nil {
log.Fatalln(err)
}
// 從檔案中讀取資料到壓縮包中
if _, err = io.Copy(w, f); err != nil {
log.Fatalln(err)
}
// 寫入到儲存中
if err := zipw.Flush(); err != nil {
log.Fatalln(err)
}
}