在 Go 语言中创建受密码保护的 ZIP 文件并不是直接支持的功能,因为标准库 archive/zip
并不提供加密功能。不过,你可以使用第三方库来实现这一功能。一个常用的库是 zip
,它支持创建受密码保护的 ZIP 文件。
以下是一个使用 zip
库创建受密码保护的 ZIP 文件的示例:
zip
库首先,你需要安装 zip
库。你可以使用 go get
命令来安装:
go get github.com/alexmullins/zip
以下是一个示例代码,演示如何使用 zip
库创建受密码保护的 ZIP 文件:
package main
import (
"archive/zip"
"fmt"
"io"
"os"
"path/filepath"
"github.com/alexmullins/zip"
)
func main() {
// 创建一个新的 ZIP 文件
zipFile, err := os.Create("protected.zip")
if err != nil {
fmt.Println(err)
return
}
defer zipFile.Close()
// 创建一个新的 ZIP 写入器
zipWriter := zip.NewWriter(zipFile)
defer zipWriter.Close()
// 要添加到 ZIP 文件中的文件列表
files := []string{"file1.txt", "file2.txt"}
// 设置密码
password := "yourpassword"
for _, file := range files {
if err := addFileToZip(zipWriter, file, password); err != nil {
fmt.Println(err)
return
}
}
fmt.Println("ZIP 文件创建成功")
}
func addFileToZip(zipWriter *zip.Writer, filename, password string) error {
// 打开要添加的文件
file, err := os.Open(filename)
if err != nil {
return err
}
defer file.Close()
// 获取文件信息
info, err := file.Stat()
if err != nil {
return err
}
// 创建一个新的 ZIP 文件头
header, err := zip.FileInfoHeader(info)
if err != nil {
return err
}
// 设置文件名
header.Name = filepath.Base(filename)
// 设置压缩方法
header.Method = zip.Deflate
// 创建一个新的 ZIP 文件写入器,并设置密码
writer, err := zipWriter.Encrypt(header.Name, password, zip.StandardEncryption)
if err != nil {
return err
}
// 将文件内容写入 ZIP 文件
if _, err := io.Copy(writer, file); err != nil {
return err
}
return nil
}
zip
库:使用 go get github.com/alexmullins/zip
安装第三方库。os.Create
创建一个新的 ZIP 文件。zip.NewWriter
创建一个新的 ZIP 写入器。addFileToZip
函数中,使用 zipWriter.Encrypt
方法设置密码。zip
库。file1.txt
和 file2.txt
,你可以根据需要修改文件列表。领取专属 10元无门槛券
手把手带您无忧上云