我就廢話不多說了,大家還是直接看代碼吧~
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ù)退出時,執(zhí)行關閉文件
defer fr.Close()
// 創(chuàng)建gzip文件讀取對象
gr, err := gzip.NewReader(fr)
if err != nil {
panic(err)
}
// defer: 在函數(shù)退出時,執(zhí)行關閉gzip對象
defer gr.Close()
// 讀取gzip對象內(nèi)容
rBuf, err := ioutil.ReadAll(gr)
if err != nil {
fmt.Println("[read gzip data err]: ", err)
}
// 以文本形式輸出
fmt.Printf("%s\n", rBuf)
}
輸出: ABCDEFG
補充:golang通過在線讀取請求url返回的zip內(nèi)部內(nèi)容
訪問url返回的zip包,怎么直接解析zip中的文件并獲取文件中的信息呢?
以前都是用java語言做這些事情,今天閑來蛋疼,用golang也實現(xiàn)了一下,效果已經(jīng)發(fā)布在我的公眾號:j全家桶---激活碼中。
引用了以下包:
"archive/zip"
"bufio"
"bytes"
"fmt"
"io"
"io/ioutil"
"net/http"
"os"
1、通過http包內(nèi)部方法,請求了需要訪問的url,這次只是為了分享在線解析zip,所以地址就不寫出來了。
2、讀取字節(jié)流并新建一個讀卡器指定讀取大小,最好弄個延遲關閉流不然內(nèi)存泄露那是必須的。
3、接下來就是獲取zip中的信息,只需要遍歷一下讀取到的文件把數(shù)據(jù)取出來就行了
其實還是蠻簡單的,只是golang語言用得少,對于流的操作也比較少所以寫一個今天實現(xiàn)這個功能的總結(jié),點滴積累厚積薄發(fā)!
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
您可能感興趣的文章:- Go 語言中gin使用gzip壓縮遇到的問題
- go判斷文件夾是否存在并創(chuàng)建的實例
- go 協(xié)程返回值處理操作
- golang實現(xiàn)的文件上傳下載小工具
- Golang 實現(xiàn)復制文件夾同時復制文件
- golang文件讀取-按指定BUFF大小讀取方式
- golang 如何獲取pem格式RSA公私鑰長度