当前位置: 首页 > news >正文

Golang 中的 archive/zip 包详解(三):常用函数

Golang 中的 archive/zip 包用于处理 ZIP 格式的压缩文件,提供了一系列用于创建、读取和解压缩 ZIP 格式文件的函数和类型,使用起来非常方便,本文讲解下常用函数。

zip.OpenReader

定义如下:

func OpenReader(name string) (*ReadCloser, error) 

打开一个 ZIP 文件,并返回一个 zip.ReadCloser 类型的对象。简单使用示例如下:

package mainimport ("archive/zip""fmt""log"
)func main() {zipFile := "path/to/myfile.zip"reader, err := zip.OpenReader(zipFile)if err != nil {log.Fatal(err)}defer reader.Close()// 读取 ZIP 文件中的内容for _, file := range reader.File {fmt.Println("文件名:", file.Name)fmt.Println("文件大小:", file.UncompressedSize64)}
}

zip.NewReader

定义如下:

func NewReader(r io.ReaderAt, size int64) (*Reader, error)

创建一个新的 zip.Reader 类型的对象用于读取ZIP文件,简单使用示例如下:

package mainimport ("archive/zip""fmt""log""strings"
)func main() {zipData := getZipData() // 假设获取到了 ZIP 文件的字节数据reader, err := zip.NewReader(strings.NewReader(string(zipData)), int64(len(zipData)))if err != nil {log.Fatal(err)}// 现在你可以使用 reader 对象来读取 ZIP 文件中的内容了for _, file := range reader.File {fmt.Println("文件名:", file.Name)fmt.Println("文件大小:", file.UncompressedSize64)}
}func getZipData() []byte {// 假设这里是获取 ZIP 文件的字节数据的逻辑// 这里只是示例,你需要根据实际情况来获取 ZIP 文件的数据zipData := []byte{80, 75, 3, 4, 20, 0, 8, 8, 0, 0, 0, 0, 90, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}return zipData
}

zip.NewWriter

定义如下:

func NewWriter(w io.Writer) *Writer 

创建一个新的 zip.Writer 类型的对象用于写入 ZIP 文件。使用示例可以参考之前的第一篇文章《Golang 中的 archive/zip 包详解(一):实现 ZIP 压缩与解压》。

zip.FileInfoHeader

定义如下:

func FileInfoHeader(fi fs.FileInfo) (*FileHeader, error) 

将文件信息转换为 zip.FileHeader 结构体,以便设置 ZIP 文件中每个文件的属性,简单使用示例如下:

package mainimport ("archive/zip""fmt""log""os"
)func main() {fileName := "file.txt"fileInfo, err := os.Stat(fileName)if err != nil {log.Fatal(err)}header, err := zip.FileInfoHeader(fileInfo)if err != nil {log.Fatal(err)}fmt.Println("文件名:", header.Name)fmt.Println("文件大小:", header.UncompressedSize64)
}

zip.RegisterCompressor

定义如下:

func RegisterCompressor(method uint16, comp Compressor) 

用来注册自定义的压缩方法。

zip.RegisterDecompressor

定义如下:

func RegisterDecompressor(method uint16, dcomp Decompressor) 

用来注册自定义的解压缩方法。

小结

以上是 archive/zip 包中的一些常用函数,通过使用这些函数,可以方便地创建、读取和修改 ZIP 文件。

相关文章:

Golang 中的 archive/zip 包详解(三):常用函数

Golang 中的 archive/zip 包用于处理 ZIP 格式的压缩文件,提供了一系列用于创建、读取和解压缩 ZIP 格式文件的函数和类型,使用起来非常方便,本文讲解下常用函数。 zip.OpenReader 定义如下: func OpenReader(name string) (*R…...

微服务架构七种模式

微服务架构七种模式 目录概述需求: 设计思路实现思路分析 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive.…...

关于CICD流水线的前端项目运行错误,npm项目环境配置时出现报错:Not Found - GET https://registry.npm...

关于CICD流水线的前端项目运行错误,npm项目环境配置时出现报错:Not Found - GET https://registry.npm… 原因应该是某些jar包缓存中没有需要改变镜像将包拉下来 npm config set registry http://registry.npm.taobao.org npm install npm run build...

element-plus的周选择器 一周从周一开始

1、代码 1&#xff09;、template中 <el-date-picker v-model"value1" type"week" format"[Week] ww" placeholder"巡访周" change"change"value-format"YYYY-MM-DD" /> 2&#xff09;、方法中 import…...

Android 9.0 pms获取应用列表时过滤掉某些app功能实现

1.前言 在9.0的系统rom定制化开发中,对系统定制的功能也是很多的,在一次产品开发中,要求在第三方app获取应用列表的时候,需要过滤掉某些app,就是不显示在app应用列表中,这就需要在pms查询app列表时过滤掉这些app就可以了,接下来就实现这些功能 2.pms获取应用列表时过滤掉…...

HTML <thead> 标签

实例 带有 thead、tbody 以及 tfoot 元素的 HTML 表格: <table border="1"><thead><tr><th>Month</th><th>Savings</th></tr></thead><tfoot><tr><td>Sum</td><td>$180<…...

谷歌发布Gemini以5倍速击败GPT-4

在Covid疫情爆发之前&#xff0c;谷歌发布了MEENA模型&#xff0c;短时间内成为世界上最好的大型语言模型。谷歌发布的博客和论文非常可爱&#xff0c;因为它特别与OpenAI进行了比较。 相比于现有的最先进生成模型OpenAI GPT-2&#xff0c;MEENA的模型容量增加了1.7倍&#xf…...

力扣92. 局部反转链表

92. 反转链表 II 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], left 2, right 4 输出&am…...

九、适配器模式

一、什么是适配器模式 适配器模式&#xff08;Adapter&#xff09;的定义如下&#xff1a;将一个类的接口转换成客户希望的另外一个接口&#xff0c;使得原本由于接口不兼容而不能一起工作的那些类能一起工作。 适配器模式&#xff08;Adapter&#xff09;包含以下主要角色&…...

使用spring自带的发布订阅来实现发布订阅

背景 公司的项目以前代码里面有存在使用spring自带发布订阅的代码&#xff0c;因此稍微学习一下如何使用&#xff0c;并了解一下这种实现方式的优缺点。 优点 实现方便&#xff0c;代码方面基本只需要定义消息体和消费者&#xff0c;适用于小型应用程序。不依赖外部中间件&a…...

Walmart电商促销活动即将开始,如何做促销活动?需要注意什么?

近日&#xff0c;沃尔玛官宣Baby Days优惠活动将于9月1日正式开始&#xff01;卖家可以把握机会&#xff0c;通过设置促销定价&#xff0c;以最优惠的婴儿相关产品价格吸引消费者&#xff0c;包括汽车座椅、婴儿车、尿布袋、家具、床上用品、消耗品、婴儿服装、孕妇装等。注意本…...

Matlab(画图进阶)

目录 大纲 1.特殊的Plots 1.1 loglog(双对数刻度图) ​1.3 plotyy(创建具有两个y轴的图形) 1.4yyaxis(创建具有两个y轴的图) 1.5 bar 3D条形图(bar3) 1.6 pie(饼图) 3D饼图 1.7 polar 2.Stairs And Ste阶梯图 3.Boxplot 箱型图和Error Bar误差条形图 3.1 boxplot 3.2 …...

人生的回忆

回忆是人类宝贵的精神财富&#xff0c;它们像一串串珍珠&#xff0c;串联起我们生活中的每一个片段。 回忆是时间的见证者&#xff0c;它们承载着我们成长、经历、悲欢离合的点点滴滴。 回忆让我们重温过去的欢笑与眼泪&#xff0c;感受那些已经逝去的时光。它们就像一本翻开的…...

Spring之依赖注入源码解析

Spring之依赖注入源码解析 Spring依赖注入的方式 手动注入 在XML中定义Bean时&#xff0c;即为手动注入&#xff0c;因为是程序员手动给某个属性指定了值。 通过set方式进行注入 <bean name"userService" class"com.luban.service.UserService">…...

5G NR:RACH流程-- Msg1之生成PRACH Preamble

随机接入流程中的Msg1&#xff0c;即在PRACH信道上发送random access preamble。涉及到两个问题&#xff1a; 一个是如何产生preamble&#xff1f;一个是如何选择正确的PRACH时频资源发送所选的preamble? 一、PRACH Preamble是什么 PRACH Preamble从数学上来讲是一个长度为…...

高基数类别特征预处理:平均数编码 | 京东云技术团队

一 前言 对于一个类别特征&#xff0c;如果这个特征的取值非常多&#xff0c;则称它为高基数&#xff08;high-cardinality&#xff09;类别特征。在深度学习场景中&#xff0c;对于类别特征我们一般采用Embedding的方式&#xff0c;通过预训练或直接训练的方式将类别特征值编…...

高效利用隧道代理实现无阻塞数据采集

在当今信息时代&#xff0c;大量的有价值数据分散于各个网站和平台。然而&#xff0c;许多网站对爬虫程序进行限制或封禁&#xff0c;使得传统方式下的数据采集变得困难重重。本文将向您介绍如何通过使用隧道代理来解决这一问题&#xff0c;并帮助您成为一名高效、顺畅的数据采…...

图论岛屿问题DFS+BFS

leetcode 200 岛屿问题 class Solution {//定义对应的方向boolean [][] visited;int dir[][]{{0,1},{1,0},{-1,0},{0,-1}};public int numIslands(char[][] grid) {//对应的二维数组int count0;visitednew boolean[grid.length][grid[0].length];for (int i 0; i < grid.l…...

Cypress web自动化windows环境npm安装Cypress

前言 web技术已经进化了&#xff0c;web的测试技术最终还是跟上了脚步&#xff0c;新一代的web自动化技术出现了&#xff1f; Cypress可以对在浏览器中运行的任何东西进行快速、简单和可靠的测试。 官方地址https://www.cypress.io/,详细的文档介绍https://docs.cypress.io/g…...

CentOS7.9设置ntp时间同步

文章目录 应用场景基础知识操作步骤 应用场景 我们公司是做智慧交通的&#xff0c;主要卖交通相关的硬件和软件。硬件包括信号机、雷达、雷视、边缘盒子等&#xff0c;软件包括信控平台、管控平台等信号机设备、雷达设备、边缘计算单元等&#xff0c;还有一些第三方的卡口设备…...

SAP FI模块实战:OBC4配置字段状态变式全流程解析(含常见报错处理)

SAP FI模块深度实战&#xff1a;OBC4字段状态变式配置与冲突解决指南 1. 字段状态变式的核心价值与应用场景 在SAP财务模块中&#xff0c;字段状态变式&#xff08;Field Status Variants&#xff09;是控制会计凭证输入界面的关键配置项。它决定了用户在创建财务凭证时&#x…...

程序员体检报告暗语:甲状腺结节=加班等级说明书

一、当体检报告出现“甲状腺结节”翻开软件测试工程师的体检报告&#xff0c;“甲状腺结节”已成为高频词。医学定义中&#xff0c;甲状腺结节是甲状腺细胞异常增生形成的肿块&#xff0c;随吞咽移动&#xff0c;临床检出率超20%&#xff08;数据来源&#xff1a;2023年《中国甲…...

集团型企业BI试点,为什么一定要先做多域资源隔离?

艾瑞咨询《2025年中国BI市场报告》显示&#xff0c;超7成集团型企业的首次BI试点项目因跨业务单元权限冲突、数据口径混乱延期或终止&#xff08;统计样本覆盖120家年营收超50亿的国内集团企业&#xff0c;统计窗口为2022-2024年试点项目全生命周期&#xff09;。这个数据和大部…...

Open-Shell-Menu:让Windows界面回归高效与个性化的开源解决方案

Open-Shell-Menu&#xff1a;让Windows界面回归高效与个性化的开源解决方案 【免费下载链接】Open-Shell-Menu Classic Shell Reborn. 项目地址: https://gitcode.com/gh_mirrors/op/Open-Shell-Menu 当项目经理王工在Windows 11电脑上第5次点击"所有应用"按钮…...

效率提升:基于快马AI生成vmware虚拟机自动化部署脚本,告别手动配置

在开发过程中&#xff0c;虚拟机环境的搭建往往是耗时又容易出错的环节。特别是当需要频繁创建不同配置的虚拟机时&#xff0c;手动操作不仅效率低下&#xff0c;还容易遗漏关键步骤。最近尝试用自动化脚本解决这个问题&#xff0c;效果出乎意料地好&#xff0c;分享下具体实现…...

AutoSAR从入门到精通:构建标准化汽车软件架构的完整指南

1. 为什么汽车软件需要AutoSAR&#xff1f; 十年前我刚入行汽车电子时&#xff0c;每个OEM厂商的ECU软件都是独立开发的"黑盒子"。同一款车窗控制功能&#xff0c;在德系、日系、美系车型上要用完全不同的代码实现。更痛苦的是&#xff0c;当需要升级ADAS功能时&…...

C++ 控制流完整性(CFI):防御面向返回编程(ROP)攻击的编译器加固方案

各位来宾&#xff0c;各位技术同仁&#xff0c;大家好&#xff01;今天&#xff0c;我们齐聚一堂&#xff0c;探讨一个在现代软件安全领域至关重要的话题&#xff1a;C 控制流完整性&#xff08;CFI&#xff09;及其在防御面向返回编程&#xff08;ROP&#xff09;攻击中的作用…...

DBeaver驱动包终极指南:一键配置30+数据库,彻底告别网络依赖

DBeaver驱动包终极指南&#xff1a;一键配置30数据库&#xff0c;彻底告别网络依赖 【免费下载链接】dbeaver-driver-all dbeaver所有jdbc驱动都在这&#xff0c;dbeaver all jdbc drivers ,come and download with me , one package come with all jdbc drivers. 项目地址: …...

langchain技术栈研究

引言 langchain新版本1.1.0 出来了&#xff0c;老版的api看了一些&#xff0c;api写法看起来有些凌乱&#xff0c;感觉还是SpringAI相对好好记忆一些。不知到1.x版本的会好使一些不。我们先来看看新版的langchain、langgraph、deepagents。 python vscode安装了一个backformate…...

Gitee:数字化转型浪潮中企业项目管理的战略级解决方案

在数字经济成为全球经济增长新引擎的背景下&#xff0c;企业数字化转型已从"选择题"变为"必答题"。项目管理工具作为数字化转型的基础设施&#xff0c;其重要性日益凸显。根据IDC最新预测&#xff0c;到2025年&#xff0c;中国数字经济规模将突破80万亿元&…...