archive/zip文件压缩
十月 20, 2024
简介
- archive/zip 是一个用于创建和提取 ZIP 归档文件的 Go 语言包。ZIP 文件是一种常见的存档文件格式,它可以包含多个文件和文件夹,并使用压缩算法减小文件大小。archive/zip 包提供了创建、打开、读取和写入 ZIP 文件的功能,使得在 Go 语言中处理 ZIP 文件变得非常简单。
快速使用
- 压缩
- zip.NewWriter(fw) 更具一个文件创建一个zip.Write,用来写入压缩文件
- filepath.Walk(src, func(path string, fi os.FileInfo, errBack error) (err error) 用来递归src路径文件夹中的所有的文件(src可以是文件路径也可以是文件夹路径,文件就执行一次)
- zip.FileInfoHeader(fi) 将文件信息转换为 ZIP 文件头
- 后面的逻辑是我将src这层目录去除掉了
- zw.CreateHeader(fh) 方法创建一个新的文件并得到一个 io.Writer 对象
- io.Copy(w, fr) 拷贝文件将这个文件写入压缩包
1 | func Zip(dst string, src string) (err error) { |
- 将src目录下的所有文件,都压缩成为log.zip
- 解压缩
- zip.OpenReader(src) 打开一个zip压缩包
- os.Mkdir(dest, os.ModePerm) 创建一个文件夹用于存放压缩包的解压出来的文件
- for _, file := range zipFile.File {}遍历所有的文件
- file.FileInfo().IsDir() 如果遍历到的是文件夹,就要创建一个新的文件夹然后走下一个循环,跳过文件拷贝
- io.Copy(targetFile, fileReader) 拷贝至目标文件
1 | func Unzip(src string, dest string) error { |
- 成功将log.zip解压到dest目录下面
查看评论