压缩文件为zip需要用到 "archive/zip"这个包。
首先使用os.Create创建一个名为aaa.zip的文件。
zipFile, err := os.Create("aaa.zip")
接着使用zip.NewWriter来创建一个写入的参数。
zipWriter := zip.NewWriter(zipFile)
defer zipWriter.Close()
然后遍历你想要压缩的文件,将所有的内容复制到zip文件里
err = filepath.Walk(dirPath, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
header, err := zip.FileInfoHeader(info)
if err != nil {
return err
}
relativePath, err := filepath.Rel(dirPath, path)
if err != nil {
return err
}
header.Name = relativePath
if info.IsDir() {
header.Name += "/"
}
writer, err := zipWriter.CreateHeader(header)
if err != nil {
return err
}
if !info.IsDir() {
file, err := os.Open(path)
if err != nil {
return err
}
defer file.Close()
_, err = io.Copy(writer, file)
if err != nil {
return err
}
}
return nil
})