Go ZIP压缩文件读写操作

news2024/10/6 1:36:27

创建zip文件

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

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文档过程类似,需要解压后的文档目录结构创建:

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)
		}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1212068.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何高效收集数据?

在当今这个信息爆炸的时代,数据已经成为了一种新的资源,其价值不可估量。收集数据的重要性日益凸显,无论是对于企业、政府还是个人,数据都已经成为了一种宝贵的财富。分享一些网站。 一、宏观数据 1.国家统计局(数据…

智慧工地综合管理平台-项目开发管理规范

目的 本规范制定旨在规范项目的开发流程,提高软件开发质量和效率,降低开发成本和风险。该规范包括但不限于以下几个方面: 项目管理 包括项目计划、需求分析、设计、开发、测试、发布等环节,以及项目进度、质量和风险管理等方面项目计划管理:制定项目计划,包括确定项目目…

基于Springboot+Vue的社区医院管理系统

基于SpringbootVue的社区医院管理系统的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringBootMyBatisVue工具:IDEA/Ecilpse、Navicat、Maven 系统展示 主页 医生列表 医生详情 登录界面 管理员界面 医生界面 摘要 社区医院管…

day22_mysql

今日内容 零、 复习昨日 一、MySQL 一、约束 1.1 约束 是什么? 约束,即限制,就是通过设置约束,可以限制对数据表数据的插入,删除,更新 怎么做? 约束设置的语法,大部分是 create table 表名( 字段 数据类型(长度) 约束, 字段 数据类型(长度) 约束 );1.1 数据类型 其实数据类型…

HDFS入门--学习笔记

1,大数据介绍 定义 数据指的是:一种可以被鉴别的、对客观事件进行记录的符号,除了可以是最简单的 数字外,也可以是各类符号、文字、图像、声音等。 通俗地说,数据就是对人类的行为及发生事件的一种记录。 存在的价值…

【验证码逆向专栏】百某网数字九宫格验证码逆向分析

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未…

Debezium-Embedded 实时监控MySQL数据变更

1.Debezium-Embedded 简介 Debezium连接器的操作通常是将它们部署到Kafka Connect服务,并配置一个或多个连接器来监控上游数据库,并为它们在上游数据库中看到的所有更改生成数据更改事件。这些数据更改事件被写入Kafka,在那里它们可以被许多不…

Wireshark抓包工具配置以及MQTT抓包分析

1、Wireshark抓包工具使用 打开Wireshark选择,需要抓取的物理网卡,添加过滤设置。 单击“捕获”,选择选项,输入需要捕获的IP地址和端口号。 如: ip host 10.60.4.45 and tcp port 1883 ip host 10.60.4.45 and http p…

JVM虚拟机:垃圾回收之三色标记

本文重点 在前面的课程中我们已经学习了垃圾回收器CMS和G1,其中CMS和G1中的mixedGC都存在四个过程,这四个过程中有一个过程叫做并发标记,也就是说程序一边运行,一边标记垃圾。这个过程最困难的是:如果在标记垃圾的时候,如果对象的引用关系发生了改变,此时应该如何处理?…

吴恩达《机器学习》8-5->8-6:特征与直观理解I、样本与值观理解II

8.5、特征与直观理解I 一、神经网络的学习特性 神经网络通过学习可以得出自身的一系列特征。相对于普通的逻辑回归,在使用原始特征 x1​,x2​,...,xn​ 时受到一定的限制。虽然可以使用一些二项式项来组合这些特征,但仍然受到原始特征的限制。在神经网…

mysql之搭建MHA架构实现高可用

1、定义 全称是masterhigh avaliabulity。基于主库的高可用环境下可以实现主从复制及故障切换(基于主从复制才能故障切换) MHA最少要求一主两从,半同步复制模式 2、作用 解决mysql的单点故障问题。一旦主库崩溃,MHA可以在0-30…

Postman工具简介

介绍 Postman是一个商业的接口测试工具。免费的版本也可以使用不少功能。 官网:https://www.postman.com/ 下载、安装、应用界面 下载 安装、安装成功以后的应用界面 双击下载下来的可执行文件进行安装,出现如下界面: 可以注册一个账…

黑马程序员微服务第四天课程 分布式搜索引擎1

分布式搜索引擎01 – elasticsearch基础 0.学习目标 1.初识elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容 例如: …

新一轮SocialFi浪潮来袭,Atem Network 再次打响注意力争夺战

火爆如潮的 Atem Network 再次从 CyberConnect 以及 Friend.tech 手中接过 SocialFi 赛道的热度大棒,同时这也表明,协议层仍将是 Web3 社交领域的主要叙事。 前不久,Web3社交协议Atem Network 在白皮书中披露了ATEM的代币经济模型&#xff0c…

【论文阅读】(VAE)Auto-Encoding Variational Bayes

论文地址:[1312.6114] Auto-Encoding Variational Bayes (arxiv.org) 【前言】:VAE模型是Kingma(也是Adam的作者)大神在2014年发表的文章,是一篇非常非常经典,且实现非常优雅的生成模型,同时它还为bayes概率图模型难以…

WorkPlus AI助理知识问答机器人,助力企业级私有化AI构建

ChatGPT以及其他大语言模型展现了令人惊叹的广博知识、语义理解能力与创造能力。它们能够在会话中承认自身错误并进行改正,还能进行一定程度的逻辑推理,具备多语种翻译与多语言编程等"超能力",可胜任多种自然语言处理任务。 然而&…

JavaEE进阶学习:Spring 的创建和使用

Spring 就是⼀个包含了众多工具方法的 IoC 容器。既然是容器那么它就具备两个最基本的功能: 将对象存储到容器(Spring)中从容器中将对象取出来 接下来使用 Maven 方式来创建一个 Spring 项目,创建 Spring 项目和 Servlet 类似&a…

RequestContextHolder详解

最近遇到的问题是在service获取request和response,正常来说在service层是没有request的,然而直接从controlller传过来的话解决方法太粗暴,后来发现了SpringMVC提供的RequestContextHolder遂去分析一番,并借此对SpringMVC的结构深入了解一下,后面会再发文章详细分析源码 1.Reque…

vite环境变量相关

环境变量:根据环境的不同,灵活的自动读取相应的变量。避免了手动修改。 import path from path import postCssPxToRem from postcss-pxtorem import { defineConfig, loadEnv } from vite import createVitePlugins from ./vite/plugins import copy f…

初识VBA代码及应用VBA代码第四节:如何录制宏

《VBA之Excel应用》(10178983)是非常经典的,是我推出的第七套教程,定位于初级,目前是第一版修订。这套教程从简单的录制宏开始讲解,一直到窗体的搭建,内容丰富,实例众多。大家可以非…