go语言制作的zip压缩程序示例分析
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,今天就跟大家聊聊有关go语言制作的zip压缩程序示例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。可以压缩文件和目录。package ma
千家信息网最后更新 2025年11月07日go语言制作的zip压缩程序示例分析
今天就跟大家聊聊有关go语言制作的zip压缩程序示例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
可以压缩文件和目录。
package mainimport ( "archive/zip" "bytes" "fmt" "io/ioutil" "os" "path/filepath")func main() { if err := compress(`gopkg`, `gopkg.zip`); err != nil { fmt.Println(err) }}// 参数frm可以是文件或目录,不会给dst添加.zip扩展名func compress(frm, dst string) error { buf := bytes.NewBuffer(make([]byte, 0, 10*1024*1024)) // 创建一个读写缓冲 myzip := zip.NewWriter(buf) // 用压缩器包装该缓冲 // 用Walk方法来将所有目录下的文件写入zip err := filepath.Walk(frm, func(path string, info os.FileInfo, err error) error { var file []byte if err != nil { return filepath.SkipDir } header, err := zip.FileInfoHeader(info) // 转换为zip格式的文件信息 if err != nil { return filepath.SkipDir } header.Name, _ = filepath.Rel(filepath.Dir(frm), path) if !info.IsDir() { // 确定采用的压缩算法(这个是内建注册的deflate) header.Method = 8 file, err = ioutil.ReadFile(path) // 获取文件内容 if err != nil { return filepath.SkipDir } } else { file = nil } // 上面的部分如果出错都返回filepath.SkipDir // 下面的部分如果出错都直接返回该错误 // 目的是尽可能的压缩目录下的文件,同时保证zip文件格式正确 w, err := myzip.CreateHeader(header) // 创建一条记录并写入文件信息 if err != nil { return err } _, err = w.Write(file) // 非目录文件会写入数据,目录不会写入数据 if err != nil { // 因为目录的内容可能会修改 return err // 最关键的是我不知道咋获得目录文件的内容 } return nil }) if err != nil { return err } myzip.Close() // 关闭压缩器,让压缩器缓冲中的数据写入buf file, err := os.Create(dst) // 建立zip文件 if err != nil { return err } defer file.Close() _, err = buf.WriteTo(file) // 将buf中的数据写入文件 if err != nil { return err } return nil}看完上述内容,你们对go语言制作的zip压缩程序示例分析有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
文件
目录
内容
数据
压缩器
缓冲
示例
程序
语言
分析
制作
信息
格式
部分
面的
关键
参数
同时
尽可能
扩展名
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
新乡市软件开发公司是否交税
软件开发实习生的工作内容
安卓软件开发ppt下载
北京事业单位软件开发
什么软件开发大型游戏
网络安全法规定的工作流程
服务器v4有哪些cup
宜昌广德网络技术有限公司
sql数据库如何查询重复
哪些数据库提供博硕士论文
网络安全建议信英语
吴忠bim软件开发工程
保证网络安全的做法
大专哪些学校有软件开发
电子软件开发包括哪些
拳头账号所有服务器都可以登陆吗
嵌入式软件开发 管理
hca数据库怎么用
公安网络安全培训
amd 服务器Rome GMI
济南存储服务器公司
互联网用哪些软件开发
南京万有力网络技术
成都卡客网络技术有限公司
我的世界服务器如何当上管理员
数据库实例和数据库可以分开么
海淀区软件开发来电咨询
文件服务器架设方案
怪猎和喷射战士联机服务器
服务器连接交换机操作