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

这篇具有很好参考价值的文章主要介绍了Golang 中的 archive/zip 包详解(三):常用函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

zip.OpenReader

定义如下:

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

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

package main

import (
	"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 main

import (
	"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 main

import (
	"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 文件。文章来源地址https://www.toymoban.com/news/detail-687152.html

到了这里,关于Golang 中的 archive/zip 包详解(三):常用函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 遇到:PytorchStreamReader failed reading zip archive: failed finding central 错误应该如何解决

    遇到 \\\"PytorchStreamReader failed reading zip archive: failed finding central directory\\\" 错误是由于在读取PyTorch模型时出现的问题。这个错误通常发生在模型文件被损坏或不完整的情况下。要解决这个问题,你可以尝试以下方法: 检查模型文件:首先,确保你的模型文件没有被损坏或删除。你

    2024年02月08日
    浏览(45)
  • linux 中常用的压缩和解压缩命令详解(tar zip)

    在工作中,涉及到文件传输,为了减少文件的体积和传输的时间,经常会对文件进行压缩,本文介绍了linux系统中常用的压缩和解压缩命令 .tar :简单封装,被称为归档文件,只是简单的将文件组装到一个.tar的文件内,并没有太多文件体积的减少,仅仅是简单的封装 .gz :压

    2024年02月06日
    浏览(39)
  • linux下tar、gz、zip等常用解压缩命令详解

    tar是Unix和类Unix系统上的归档打包工具,可以将多个文件合并为一个文件,打包后尾缀.tar。目前,tar文件格式已经成为POSIX标准,最初是POSIX.1-1988,目前是POSIX.1-2001。本程序最初的设计目的是将文件备份到磁带上(tape archive 磁带存档),因而得名tar。 tar的命令格式: tar[必要

    2024年02月15日
    浏览(51)
  • golang strings 常用函数

    官网 https://pkg.go.dev/strings 这里介绍最常用的函数 1、Fields 以空格为字段分割符,返回[]string 2、Contains 是否包含子串,返回bool 3、Split ,以子串分割,返回[]string 4、ReplaceAll 替换 5、其他 -------------end

    2024年02月13日
    浏览(37)
  • 【深度学习】 Python 和 NumPy 系列教程(三):Python容器:1、列表List详解(初始化、索引、切片、更新、删除、常用函数、拆包、遍历)

    目录 一、前言 二、实验环境 三、Python容器(Containers) 0、容器介绍 1、列表(List) 1. 初始化 a. 创建空列表 b. 使用现有元素初始化列表 c. 使用列表生成式 d. 复制列表 2. 索引和切片 a. 索引 b. 负数索引 c. 切片 3. 常用操作(更新、删除) a. 更新单个元素 b. 更新切片 c. 删除单

    2024年02月09日
    浏览(53)
  • Golang中context包基础知识详解

    目录 什么是context.Context? 如何构造context.Context对象? 衍生Context方法 使用context包需要注意的点 context.Context是Golang标准库提供的接口(context包对此接口有多种实现),该接口提供了四个抽象法: Deadline方法,返回context.Context被取消的时间点,也就是需要完成任务的截止时间

    2024年02月02日
    浏览(44)
  • Golang 中的 map 详解

    1、map 的定义   在计算机科学里,被称为相关数组、map、符号表或者字典,是由一组 key, value 对组成的抽象数据结构,并且同一个 key 只会出现一次。   两个关键点:map 是由 key-value 对组成的;key 只会出现一次。   map 的设计也被称为 “The dictionary problem(字典问题)

    2024年02月14日
    浏览(52)
  • Golang 中的接口详解

    什么是接口:接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节。 在Go语言中接口(interface)是一种类型,一种抽象的类型。 interface是一组method的集合,是duck-type programming的一种体现。 接口做的事情就像是定义一个协议(规则

    2024年02月13日
    浏览(39)
  • Golang zip压缩及加密

    调用

    2024年02月09日
    浏览(33)
  • golang如何生成zip压缩文件

    在Golang中,您可以使用标准库中的compress/zip包来生成ZIP压缩文件。下面是一个简单的示例代码,演示如何使用该包来创建一个ZIP文件并将文件添加到其中: 在上述代码中,我们首先创建了一个缓冲区(buf),用于存储ZIP文件的内容。然后,我们使用zip.NewWriter函数创建了一个

    2024年02月09日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包