feat: 函数工具解 ZIP 压缩文件
This commit is contained in:
@@ -8,6 +8,52 @@ import (
|
|||||||
"path/filepath"
|
"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 压缩文件
|
// CompressZipByFile 将单文件添加到 ZIP 压缩文件
|
||||||
func CompressZipByFile(zipFilePath, filePath string) error {
|
func CompressZipByFile(zipFilePath, filePath string) error {
|
||||||
// 创建一个新的 ZIP 文件
|
// 创建一个新的 ZIP 文件
|
||||||
|
|||||||
Reference in New Issue
Block a user