Go ZIP压缩文件读写操作

创建zip文件

golang提供了**archive/zip**包来处理zip压缩文件,下面通过一个简单的示例来展示golang如何创建zip压缩文件:

Go 复制代码
func createZip(filename string) {
	// 缓存压缩文件内容
	buf := new(bytes.Buffer)
 
	// 创建zip
	writer := zip.NewWriter(buf)
	defer writer.Close()
 
	// 读取文件内容
	content, _ := ioutil.ReadFile(filepath.Clean(filename))
 
	// 接收
	f, _ := writer.Create(filename)
	f.Write(content)
 
	filename = strings.TrimSuffix(filename, path.Ext(filename)) + ".zip"
	ioutil.WriteFile(filename, buf.Bytes(), 0644)
}

读取zip文件

读取zip文档过程与创建zip文档过程类似,需要解压后的文档目录结构创建:

Go 复制代码
func readZip(filename string) {
      zipFile, err := zip.OpenReader(filename)
		if err != nil {
			panic(err.Error())
		}
		defer zipFile.Close()
 
		for _, f := range zipFile.File {
			info := f.FileInfo()
			if info.IsDir() {
				err = os.MkdirAll(f.Name, os.ModePerm)
				if err != nil {
					panic(err.Error())
				}
				continue
			}
			srcFile, err := f.Open()
			if err != nil {
				panic(err.Error())
			}
			defer srcFile.Close()
 
			newFile, err := os.Create( f.Name)
			if err != nil {
				panic(err.Error())
			}
			defer newFile.Close()
 
			io.Copy(newFile, srcFile)
		}
}
相关推荐
鼠爷ねずみ20 分钟前
SpringCloud前后端整体开发流程-以及技术总结文章实时更新中
java·数据库·后端·spring·spring cloud
代码or搬砖1 小时前
String字符串
android·java·开发语言
leo__5201 小时前
基于两步成像算法的聚束模式SAR MATLAB实现
开发语言·算法·matlab
oden1 小时前
0成本搭建!20分钟用 Workers AI + Vectorize 搞定 RAG(附全套源码)
后端
Macbethad2 小时前
自动化测试技术报告
开发语言·lua
不会画画的画师2 小时前
Go开发指南:io/ioutil包应用和迁移指南
开发语言·后端·golang
2503_928411562 小时前
12.22 wxml语法
开发语言·前端·javascript
5980354153 小时前
【java工具类】小数、整数转中文大写
android·java·开发语言
JIngJaneIL3 小时前
基于java + vue个人博客系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot