Files
2026-05-03 22:35:47 +08:00

75 lines
1.3 KiB
Go

package main
import (
"archive/zip"
"fmt"
"io"
"os"
"path/filepath"
)
// zip优缺点
func main() {
// 需要压缩的文件路径
fileToZip := "test.txt"
// 压缩后的文件名
zipFileName := "test.zip"
// 创建一个新的zip文件
zipFile, err := os.Create(zipFileName)
if err != nil {
fmt.Println("创建zip文件失败:", err)
return
}
defer zipFile.Close()
// 使用zip.Writer将文件写入到zip文件中
zipWriter := zip.NewWriter(zipFile)
defer zipWriter.Close()
// 添加文件到zip文件中
err = addFileToZip(fileToZip, zipWriter)
if err != nil {
fmt.Println("添加文件到zip失败:", err)
return
}
fmt.Println("文件压缩成功")
}
func addFileToZip(filePath string, zipWriter *zip.Writer) error {
// 打开需要压缩的文件
fileToZip, err := os.Open(filePath)
if err != nil {
return err
}
defer fileToZip.Close()
// 获取文件信息
fileInfo, err := fileToZip.Stat()
if err != nil {
return err
}
// 将文件添加到zip文件中
fileHeader, err := zip.FileInfoHeader(fileInfo)
if err != nil {
return err
}
fileHeader.Name = filepath.Base(filePath)
writer, err := zipWriter.CreateHeader(fileHeader)
if err != nil {
return err
}
_, err = io.Copy(writer, fileToZip)
if err != nil {
return err
}
return nil
}