佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > Go語(yǔ)言壓縮和解壓縮tar.gz文件的方法

Go語(yǔ)言壓縮和解壓縮tar.gz文件的方法

熱門標(biāo)簽:鐵路電話系統(tǒng) Linux服務(wù)器 地方門戶網(wǎng)站 服務(wù)外包 呼叫中心市場(chǎng)需求 AI電銷 網(wǎng)站排名優(yōu)化 百度競(jìng)價(jià)排名

本文實(shí)例講述了Go語(yǔ)言壓縮和解壓縮tar.gz文件的方法。分享給大家供大家參考。具體分析如下:

golang處理壓縮包,最常用的就是tar.gz了,這里寫了一個(gè)測(cè)試一下。

壓縮文件:

復(fù)制代碼 代碼如下:
package main
import (
    "fmt"
    "os"
    "io"
    "archive/tar"
    "compress/gzip"
)
func main() {
    // file write
    fw, err := os.Create("tar/lin_golang_src.tar.gz")
    if err != nil {
        panic(err)
    }
    defer fw.Close()
    // gzip write
    gw := gzip.NewWriter(fw)
    defer gw.Close()
    // tar write
    tw := tar.NewWriter(gw)
    defer tw.Close()
    // 打開文件夾
    dir, err := os.Open("file/")
    if err != nil {
        panic(nil)
    }
    defer dir.Close()
    // 讀取文件列表
    fis, err := dir.Readdir(0)
    if err != nil {
        panic(err)
    }
    // 遍歷文件列表
    for _, fi := range fis {
        // 逃過文件夾, 我這里就不遞歸了
        if fi.IsDir() {
            continue
        }
        // 打印文件名稱
        fmt.Println(fi.Name())
        // 打開文件
        fr, err := os.Open(dir.Name() + "/" + fi.Name())
        if err != nil {
            panic(err)
        }
        defer fr.Close()
        // 信息頭
        h := new(tar.Header)
        h.Name = fi.Name()
        h.Size = fi.Size()
        h.Mode = int64(fi.Mode())
        h.ModTime = fi.ModTime()
        // 寫信息頭
        err = tw.WriteHeader(h)
        if err != nil {
            panic(err)
        }
        // 寫文件
        _, err = io.Copy(tw, fr)
        if err != nil {
            panic(err)
        }
    }
    fmt.Println("tar.gz ok")
}

解壓文件:

復(fù)制代碼 代碼如下:
package main
import (
    "fmt"
    "os"
    "io"
    // "time"
    "archive/tar"
    "compress/gzip"
)
func main() {
    // file read
    fr, err := os.Open("tar/lin_golang_src.tar.gz")
    if err != nil {
        panic(err)
    }
    defer fr.Close()
    // gzip read
    gr, err := gzip.NewReader(fr)
    if err != nil {
        panic(err)
    }
    defer gr.Close()
    // tar read
    tr := tar.NewReader(gr)
    // 讀取文件
    for {
        h, err := tr.Next()
        if err == io.EOF {
            break
        }
        if err != nil {
            panic(err)
        }
        // 顯示文件
        fmt.Println(h.Name)
        // 打開文件
        fw, err := os.OpenFile("file2/" + h.Name, os.O_CREATE | os.O_WRONLY, 0644/*os.FileMode(h.Mode)*/)
        if err != nil {
            panic(err)
        }
        defer fw.Close()
        // 寫文件
        _, err = io.Copy(fw, tr)
        if err != nil {
            panic(err)
        }
    }
    fmt.Println("un tar.gz ok")
}

這樣以后打包下載東西的時(shí)候就可以使用了。

希望本文所述對(duì)大家的Go語(yǔ)言程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • go語(yǔ)言制作的zip壓縮程序
  • GO語(yǔ)言實(shí)現(xiàn)批量壓縮圖片和水印
  • go語(yǔ)言通過zlib壓縮數(shù)據(jù)的方法
  • Golang使用zlib壓縮和解壓縮字符串
  • Go 語(yǔ)言中g(shù)in使用gzip壓縮遇到的問題
  • golang中snappy的使用場(chǎng)合實(shí)例詳解

標(biāo)簽:仙桃 衡水 崇左 湘潭 湖南 蘭州 黃山 銅川

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Go語(yǔ)言壓縮和解壓縮tar.gz文件的方法》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    台中县| 灵台县| 孝感市| 新民市| 故城县| 兴和县| 青岛市| 台安县| 宁都县| 庆云县| 进贤县| 运城市| 麻江县| 香河县| 东乡县| 漾濞| 昌都县| 丽江市| 济南市| 怀远县| 辽阳市| 吴堡县| 阿城市| 陇西县| 水城县| 鹿邑县| 容城县| 喀喇| 澜沧| 团风县| 安达市| 铜陵市| 深泽县| 南江县| 金寨县| 西青区| 海原县| 临潭县| 伊吾县| 沐川县| 建德市|