golang 解压 zip包

  golang官方自带的zip包处理还是比较简单,不如python强大。所以需要自己写解包的细节部分。

需要引入的包如下:
“os”
“io”
“strings”
“archive/zip”
“path/filepath”

zip包解包代码如下

func unzip(src_zip string) string{
	// 解析解压包名
	dest := strings.Split(src_zip, ".")[0]
	// 打开压缩包
	unzip_file,err := zip.OpenReader(src_zip)
	if err!=nil {
		return "压缩包损坏"
	}
	// 创建解压目录
	os.MkdirAll(dest, 0755)
	// 循环解压zip文件
	for _,f := range unzip_file.File {
		rc,err := f.Open()
		if err!=nil {
			return "压缩包中文件损坏"
		}
		path := filepath.Join(dest, f.Name)
		// 判断解压出的是文件还是目录
		if f.FileInfo().IsDir() {
			os.MkdirAll(path, f.Mode())
		} else {
		    // 创建解压文件
			f, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, f.Mode())
			if err != nil {
				return "创建本地文件失败"
			}
			// 写入本地
			_,err = io.Copy(f, rc)
			if err!=nil {
				if err!=io.EOF {
					return "写入本地失败"
				}
			}
			f.Close()
		}
	}
	unzip_file.Close()	
	return "OK"
}

注:因为golang语法格式在“SH pre”中可能存在问题,所以直接拷贝不确保可以运行。

发表评论

电子邮件地址不会被公开。 必填项已用*标注