go语言制作的zip压缩程序示例分析
发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,今天就跟大家聊聊有关go语言制作的zip压缩程序示例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。可以压缩文件和目录。package ma
千家信息网最后更新 2025年01月17日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安全错误
数据库的锁怎样保障安全
数据库员工查询密码密令
南通信息网络技术常见问题
ovid数据库全称
数据库sql的名词解析
郑州苹果软件开发哪里好
服务器群安全设置
上海娇云网络技术有限公司
做成本不知道原始数据库
天龙八部内测服务器号去哪里买
进出口水果数据库2020
济南掌视界网络技术驻场
东莞数字软件开发批发价格
影音服务器租用
魔兽世界自己怎么架设服务器
凭什么说苹果适合软件开发
软件开发工程师有什么威胁
内蒙古赤峰市软件开发
佛山餐饮软件开发设计
江西服务器硬盘报价
海南软件开发平均工资
网络技术员和计算机操作员
avg更新服务器
怎样导出数据库表结构
服务器正在运行中是啥意思
小白转行网络安全工程师
重庆北碚果蔬配送软件开发
ul数据库
服务器传输数据也需要遵循协议吗
珠海行业软件开发服务费
原神国际服服务器怎么了