发布时间:2024-11-21 23:41:11
go get archive/zip
package main
import (
"archive/zip"
"log"
"os"
)
func main() {
// 创建一个新的ZIP文件
zipFile, err := os.Create("example.zip")
if err != nil {
log.Fatal(err)
}
defer zipFile.Close()
// 创建一个zip.Writer对象
zipWriter := zip.NewWriter(zipFile)
// 将文件或目录添加到ZIP文件中
err = addToZip(zipWriter, "file.txt")
if err != nil {
log.Fatal(err)
}
// 关闭zip.Writer
err = zipWriter.Close()
if err != nil {
log.Fatal(err)
}
}
func addToZip(zipWriter *zip.Writer, file string) error {
// 打开要添加的文件
srcFile, err := os.Open(file)
if err != nil {
return err
}
defer srcFile.Close()
// 创建一个zip.FileHeader对象
fileInfo, err := srcFile.Stat()
if err != nil {
return err
}
header, err := zip.FileInfoHeader(fileInfo)
if err != nil {
return err
}
header.Name = file
// 使用zipWriter向ZIP文件中写入文件
dstFile, err := zipWriter.CreateHeader(header)
if err != nil {
return err
}
// 将源文件的内容拷贝到destination file
_, err = io.Copy(dstFile, srcFile)
if err != nil {
return err
}
return nil
}
func addToZip(zipWriter *zip.Writer, file string) error {
// 打开要添加的文件
srcFile, err := os.Open(file)
if err != nil {
return err
}
defer srcFile.Close()
// 创建一个zip.FileHeader对象
fileInfo, err := srcFile.Stat()
if err != nil {
return err
}
header, err := zip.FileInfoHeader(fileInfo)
if err != nil {
return err
}
header.Name = file
// 使用zipWriter向ZIP文件中写入文件
dstFile, err := zipWriter.CreateHeader(header)
if err != nil {
return err
}
// 将源文件的内容拷贝到destination file
_, err = io.Copy(dstFile, srcFile)
if err != nil {
return err
}
return nil
}