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 }