欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go語言zip文件的讀寫操作

 更新時間:2023年04月03日 10:53:25   作者:C語言中文網  
本文主要介紹了Go語言zip文件的讀寫操作,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

Go語言的標準庫提供了對幾種壓縮格式的支持,其中包括 gzip,因此 Go 程序可以無縫地讀寫 .gz 擴展名的 gzip 壓縮文件或非 .gz 擴展名的非壓縮文件。此外標準庫也提供了讀和寫 .zip 文件、tar 包文件(.tar 和 .tar.gz),以及讀 .bz2 文件(即 .tar .bz2 文件)的功能。

本節(jié)我們將主要介紹 zip 歸檔文件的讀寫操作。

創(chuàng)建 zip 歸檔文件

Go語言提供了 archive/zip 包來操作壓縮文件,下面通過一個簡單的的示例演示如何使用Go語言來創(chuàng)建一個 zip 文件,示例代碼如下:

package main
import (
    "archive/zip"
    "bytes"
    "fmt"
    "os"
)
func main() {
    // 創(chuàng)建一個緩沖區(qū)用來保存壓縮文件內容
    buf := new(bytes.Buffer)
    // 創(chuàng)建一個壓縮文檔
    w := zip.NewWriter(buf)
    // 將文件加入壓縮文檔
    var files = []struct {
        Name, Body string
    }{
        {"Golang.txt", "http://jb51.net/golang/"},
    }
    for _, file := range files {
        f, err := w.Create(file.Name)
        if err != nil {
            fmt.Println(err)
        }
        _, err = f.Write([]byte(file.Body))
        if err != nil {
            fmt.Println(err)
        }
    }
    // 關閉壓縮文檔
    err := w.Close()
    if err != nil {
        fmt.Println(err)
    }
    // 將壓縮文檔內容寫入文件
    f, err := os.OpenFile("file.zip", os.O_CREATE|os.O_WRONLY, 0666)
    if err != nil {
        fmt.Println(err)
    }
    buf.WriteTo(f)
}

運行上面的文件會在當前目錄下生成 file.zip 文件,如下圖所示:

讀取 zip 歸檔文件

讀取一個 .zip 歸檔文件與創(chuàng)建一個歸檔文件一樣簡單,只是如果歸檔文件中包含帶有路徑的文件名,就必須重建目錄結構。

示例代碼如下所示:

package main
import (
    "archive/zip"
    "fmt"
    "io"
    "os"
)
func main() {
    // 打開一個zip格式文件
    r, err := zip.OpenReader("file.zip")
    if err != nil {
        fmt.Printf(err.Error())
    }
    defer r.Close()
    // 迭代壓縮文件中的文件,打印出文件中的內容
    for _, f := range r.File {
        fmt.Printf("文件名: %s\n", f.Name)
        rc, err := f.Open()
        if err != nil {
            fmt.Printf(err.Error())
        }
        _, err = io.CopyN(os.Stdout, rc, int64(f.UncompressedSize64))
        if err != nil {
            fmt.Printf(err.Error())
        }
        rc.Close()
    }
}

運行結果如下:

go run main.go
文件名: Golang.txt
http://jb51.net/golang/

到此這篇關于Go語言zip文件的讀寫操作的文章就介紹到這了,更多相關Go語言zip讀寫內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • go語言實現http服務端與客戶端的例子

    go語言實現http服務端與客戶端的例子

    今天小編就為大家分享一篇go語言實現http服務端與客戶端的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Go1.21新增slices包的用法詳解

    Go1.21新增slices包的用法詳解

    Go?1.21新增的?slices?包提供了很多和切片相關的函數,可以用于任何類型的切片,這篇文章主要來和大家介紹一下slices包中相關函數的用法,需要的可以參考一下
    2023-08-08
  • go語言編程學習實現圖的廣度與深度優(yōu)先搜索

    go語言編程學習實現圖的廣度與深度優(yōu)先搜索

    這篇文章主要為大家介紹了go語言編程學習實現圖的廣度與深度優(yōu)先搜索示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-10-10
  • 深入了解Golang中reflect反射基本原理

    深入了解Golang中reflect反射基本原理

    反射是這樣一種機制,它是可以讓我們在程序運行時(runtime)訪問、檢測和修改對象本身狀態(tài)或行為的一種能力。本文主要帶大家來看看Golang中reflect反射基本原理,需要的可以參考一下
    2023-01-01
  • 詳解Go語言中的逃逸分析

    詳解Go語言中的逃逸分析

    逃逸分析是編譯器用于決定將變量分配到棧上還是堆上的一種行為,下面小編就來為大家詳細講講go語言中是如何進行逃逸分析的,需要的小伙伴可以參考下
    2023-09-09
  • 一文帶你熟悉Go語言中的分支結構

    一文帶你熟悉Go語言中的分支結構

    這篇文章主要和大家分享一下Go語言中的分支結構(if?-?else-if?-?else、switch),文中的示例代碼講解詳細,對我們學習Go語言有一定的幫助,需要的可以參考一下
    2022-11-11
  • 一文帶你了解Go語言中方法的調用

    一文帶你了解Go語言中方法的調用

    這篇文章主要和大家分享一下Go語言中的方法的調用,文中的示例代碼講解詳細,對我們學習Go語言有一定的幫助,需要的小伙伴可以參考一下
    2022-12-12
  • Go基礎教程系列之回調函數和閉包詳解

    Go基礎教程系列之回調函數和閉包詳解

    這篇文章主要介紹了Go基礎教程系列之回調函數和閉包詳解,需要的朋友可以參考下
    2022-04-04
  • go語言計算兩個時間的時間差方法

    go語言計算兩個時間的時間差方法

    這篇文章主要介紹了go語言計算兩個時間的時間差方法,涉及Python操作時間的技巧,需要的朋友可以參考下
    2015-03-03
  • Golang中設置全局變量并在其他文件中使用

    Golang中設置全局變量并在其他文件中使用

    全局變量是被整個程序都可見的變量,通常用于存儲程序中需要共享的數據,本文就來介紹一下Golang中設置全局變量并在其他文件中使用的方法,感興趣的可以了解一下
    2024-01-01

最新評論