亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索

Golang compress/gzip文件壓縮與解壓實(shí)踐

P粉602998670
發(fā)布: 2025-10-13 16:25:01
原創(chuàng)
235人瀏覽過(guò)
Go語(yǔ)言中使用compress/gzip包實(shí)現(xiàn)文件及內(nèi)存數(shù)據(jù)的壓縮解壓。1. 壓縮文件:打開(kāi)源文件,創(chuàng)建.gz目標(biāo)文件,通過(guò)gzip.NewWriter寫(xiě)入并調(diào)用Close()完成壓縮。2. 解壓文件:用gzip.NewReader讀取.gz文件,io.Copy將解壓數(shù)據(jù)寫(xiě)入新文件。3. 內(nèi)存操作:bytes.Buffer結(jié)合gzip.Writer/Reader實(shí)現(xiàn)字節(jié)流壓縮解壓,適用于API響應(yīng)等場(chǎng)景。關(guān)鍵點(diǎn):Writer必須Close以觸發(fā)壓縮,Reader可直接流式讀取,建議封裝為通用函數(shù)復(fù)用。

golang compress/gzip文件壓縮與解壓實(shí)踐

在Go語(yǔ)言中處理gzip壓縮與解壓非常方便,標(biāo)準(zhǔn)庫(kù)compress/gzip結(jié)合os、io等包即可實(shí)現(xiàn)文件的壓縮與解壓。下面介紹常見(jiàn)使用場(chǎng)景和代碼實(shí)踐。

壓縮文件(File to .gz)

將普通文件壓縮為gzip格式,通常用于日志歸檔或網(wǎng)絡(luò)傳輸前的數(shù)據(jù)壓縮。

關(guān)鍵步驟:

  • 打開(kāi)源文件用于讀取
  • 創(chuàng)建目標(biāo).gz文件
  • gzip.NewWriter包裝輸出文件
  • 將源數(shù)據(jù)拷貝到gzip writer
  • 記得調(diào)用Close()觸發(fā)壓縮完成
func compressFile(src, dst string) error {
    srcFile, err := os.Open(src)
    if err != nil {
        return err
    }
    defer srcFile.Close()

    dstFile, err := os.Create(dst)
    if err != nil {
        return err
    }
    defer dstFile.Close()

    gzWriter := gzip.NewWriter(dstFile)
    defer gzWriter.Close()

    _, err = io.Copy(gzWriter, srcFile)
    return err
}
登錄后復(fù)制

解壓文件(.gz to File)

從gzip文件還原原始內(nèi)容,常用于下載后解壓或讀取壓縮日志。

立即學(xué)習(xí)go語(yǔ)言免費(fèi)學(xué)習(xí)筆記(深入)”;

注意點(diǎn):

文心大模型
文心大模型

百度飛槳-文心大模型 ERNIE 3.0 文本理解與創(chuàng)作

文心大模型56
查看詳情 文心大模型
  • 先用gzip.NewReader解析.gz文件
  • 解壓后寫(xiě)入新文件
  • gzip.Reader也需要關(guān)閉
func decompressFile(src, dst string) error {
    srcFile, err := os.Open(src)
    if err != nil {
        return err
    }
    defer srcFile.Close()

    gzReader, err := gzip.NewReader(srcFile)
    if err != nil {
        return err
    }
    defer gzReader.Close()

    dstFile, err := os.Create(dst)
    if err != nil {
        return err
    }
    defer dstFile.Close()

    _, err = io.Copy(dstFile, gzReader)
    return err
}
登錄后復(fù)制

內(nèi)存中壓縮/解壓

適用于不需要落地文件的場(chǎng)景,比如API響應(yīng)壓縮或配置加載。

使用bytes.Buffer作為緩沖區(qū):

// 壓縮字節(jié)流
func gzipData(data []byte) ([]byte, error) {
    var buf bytes.Buffer
    writer := gzip.NewWriter(&buf)
    _, err := writer.Write(data)
    if err != nil {
        return nil, err
    }
    writer.Close() // 必須調(diào)用
    return buf.Bytes(), nil
}

// 解壓字節(jié)流
func gunzipData(data []byte) ([]byte, error) {
    reader, err := gzip.NewReader(bytes.NewReader(data))
    if err != nil {
        return nil, err
    }
    defer reader.Close()
    return io.ReadAll(reader)
}
登錄后復(fù)制

基本上就這些。核心是理解gzip.Writer需要顯式關(guān)閉才能完成壓縮流程,而gzip.Reader可直接用于流式讀取。實(shí)際項(xiàng)目中可封裝成通用函數(shù)復(fù)用。

以上就是Golang compress/gzip文件壓縮解壓實(shí)踐的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!

最佳 Windows 性能的頂級(jí)免費(fèi)優(yōu)化軟件
最佳 Windows 性能的頂級(jí)免費(fèi)優(yōu)化軟件

每個(gè)人都需要一臺(tái)速度更快、更穩(wěn)定的 PC。隨著時(shí)間的推移,垃圾文件、舊注冊(cè)表數(shù)據(jù)和不必要的后臺(tái)進(jìn)程會(huì)占用資源并降低性能。幸運(yùn)的是,許多工具可以讓 Windows 保持平穩(wěn)運(yùn)行。

下載
來(lái)源:php中文網(wǎng)
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn
最新問(wèn)題
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關(guān)于我們 免責(zé)申明 意見(jiàn)反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長(zhǎng)!
關(guān)注服務(wù)號(hào) 技術(shù)交流群
PHP中文網(wǎng)訂閱號(hào)
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號(hào)
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)