feat: 函数工具解 ZIP 压缩文件

This commit is contained in:
TsMask
2024-07-24 09:54:44 +08:00
parent 831b2e2eac
commit 33a0dc2a00

View File

@@ -8,6 +8,52 @@ import (
"path/filepath"
)
// UnZip 解 ZIP 压缩文件输出到目录下
func UnZip(zipFilePath, dirPath string) error {
// 打开ZIP文件进行读取
r, err := zip.OpenReader(zipFilePath)
if err != nil {
return err
}
defer r.Close()
// 创建本地输出目录
if err := os.MkdirAll(dirPath, 0775); err != nil {
return err
}
// 遍历ZIP文件中的每个文件并解压缩到输出目录
for _, f := range r.File {
// 打开ZIP文件中的文件
rc, err := f.Open()
if err != nil {
return err
}
defer rc.Close()
// 创建解压后的文件
path := filepath.Join(dirPath, f.Name)
if f.FileInfo().IsDir() {
// 如果是目录,创建目录
os.MkdirAll(path, f.Mode())
} else {
// 如果是文件,创建文件并写入内容
file, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, f.Mode())
if err != nil {
return err
}
defer file.Close()
_, err = io.Copy(file, rc)
if err != nil {
return err
}
}
}
return nil
}
// CompressZipByFile 将单文件添加到 ZIP 压缩文件
func CompressZipByFile(zipFilePath, filePath string) error {
// 创建一个新的 ZIP 文件