使用go讀取gzip格式的壓縮包的操作
我就廢話不多說了,大家還是直接看代碼吧~
package main
// 引入所需包
import (
"os"
"compress/gzip"
"io/ioutil"
"fmt"
)
// gzip文件
var fn = "./113.200.251.66_1510825558_A6D39783B05943D8ACA64F397748CF1B_vdn.gz"
func main() {
println(fn)
// 打開本地gz格式壓縮包
fr, err := os.Open(fn)
if err != nil {
panic(err)
} else {
println("open file success!")
}
// defer: 在函數(shù)退出時(shí),執(zhí)行關(guān)閉文件
defer fr.Close()
// 創(chuàng)建gzip文件讀取對(duì)象
gr, err := gzip.NewReader(fr)
if err != nil {
panic(err)
}
// defer: 在函數(shù)退出時(shí),執(zhí)行關(guān)閉gzip對(duì)象
defer gr.Close()
// 讀取gzip對(duì)象內(nèi)容
rBuf, err := ioutil.ReadAll(gr)
if err != nil {
fmt.Println("[read gzip data err]: ", err)
}
// 以文本形式輸出
fmt.Printf("%s\n", rBuf)
}
輸出: ABCDEFG
補(bǔ)充:golang通過在線讀取請(qǐng)求url返回的zip內(nèi)部?jī)?nèi)容
訪問url返回的zip包,怎么直接解析zip中的文件并獲取文件中的信息呢?
以前都是用java語言做這些事情,今天閑來蛋疼,用golang也實(shí)現(xiàn)了一下,效果已經(jīng)發(fā)布在我的公眾號(hào):j全家桶---激活碼中。
引用了以下包:
"archive/zip" "bufio" "bytes" "fmt" "io" "io/ioutil" "net/http" "os"
1、通過http包內(nèi)部方法,請(qǐng)求了需要訪問的url,這次只是為了分享在線解析zip,所以地址就不寫出來了。
2、讀取字節(jié)流并新建一個(gè)讀卡器指定讀取大小,最好弄個(gè)延遲關(guān)閉流不然內(nèi)存泄露那是必須的。
3、接下來就是獲取zip中的信息,只需要遍歷一下讀取到的文件把數(shù)據(jù)取出來就行了

其實(shí)還是蠻簡(jiǎn)單的,只是golang語言用得少,對(duì)于流的操作也比較少所以寫一個(gè)今天實(shí)現(xiàn)這個(gè)功能的總結(jié),點(diǎn)滴積累厚積薄發(fā)!
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
Golang基于JWT與Casbin身份驗(yàn)證授權(quán)實(shí)例詳解
這篇文章主要為大家介紹了Golang基于JWT與Casbin實(shí)現(xiàn)身份驗(yàn)證授權(quán)實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
go交叉編譯sqlite報(bào)錯(cuò)問題解決分析
這篇文章主要為大家介紹了go交叉編譯sqlite報(bào)錯(cuò)問題解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
Golang語言JSON解碼函數(shù)Unmarshal的使用
本文主要介紹了Golang語言JSON解碼函數(shù)Unmarshal的使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
Go語言中配置實(shí)現(xiàn)Logger日志的功能詳解
當(dāng)我們正式開發(fā)go程序的時(shí)候,就會(huì)發(fā)現(xiàn)記錄程序日志已經(jīng)不是fmt.print這么簡(jiǎn)單了,所以我們需要專門的去存儲(chǔ)日志文件,這篇文章主要介紹了在Go語言中配置實(shí)現(xiàn)Logger日志的功能,感興趣的同學(xué)可以參考下文2023-05-05
Go語言實(shí)現(xiàn)超時(shí)的三種方法實(shí)例
超時(shí)在一些業(yè)務(wù)場(chǎng)景里非常普遍,下面這篇文章主要給大家介紹了關(guān)于Go語言實(shí)現(xiàn)超時(shí)的三種方法,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Go語言具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-07-07

