溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

使用go語(yǔ)言怎么對(duì)gzip壓縮包進(jìn)行讀取

發(fā)布時(shí)間:2020-12-23 14:57:23 來(lái)源:億速云 閱讀:291 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

使用go語(yǔ)言怎么對(duì)gzip壓縮包進(jìn)行讀???很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

package main
// 引入所需包
import (
  "os"
  "compress/gzip"
  "io/ioutil"
  "fmt"
)
// gzip文件
var fn = "./113.200.251.66_1510825558_A6D39783B05943D8ACA64F397748CF1B_vdn.gz"
func main() {
  println(fn)
  // 打開(kāi)本地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通過(guò)在線讀取請(qǐng)求url返回的zip內(nèi)部?jī)?nèi)容

訪問(wèn)url返回的zip包,怎么直接解析zip中的文件并獲取文件中的信息呢?

以前都是用java語(yǔ)言做這些事情,今天閑來(lái)蛋疼,用golang也實(shí)現(xiàn)了一下,效果已經(jīng)發(fā)布在我的公眾號(hào):j全家桶---激活碼中。

引用了以下包:

"archive/zip"
"bufio"
"bytes"
"fmt"
"io"
"io/ioutil"
"net/http"
"os"

1、通過(guò)http包內(nèi)部方法,請(qǐng)求了需要訪問(wèn)的url,這次只是為了分享在線解析zip,所以地址就不寫(xiě)出來(lái)了。

2、讀取字節(jié)流并新建一個(gè)讀卡器指定讀取大小,最好弄個(gè)延遲關(guān)閉流不然內(nèi)存泄露那是必須的。

3、接下來(lái)就是獲取zip中的信息,只需要遍歷一下讀取到的文件把數(shù)據(jù)取出來(lái)就行了

使用go語(yǔ)言怎么對(duì)gzip壓縮包進(jìn)行讀取

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI