亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從 gzip 存檔中的文件流式傳輸數據,以便測試標頭?

如何從 gzip 存檔中的文件流式傳輸數據,以便測試標頭?

Go
呼如林 2022-10-17 09:39:58
我正在嘗試在 Go 中編寫一個提取工具,它將解壓縮/提取幾種類型的存檔文件。為了檢查文件的類型,我使用了幻數,并且已經成功地直接檢查.gz和.tar歸檔,但是對于任何.tar.gz/.tgz歸檔,我似乎無法檢查 Gzip 包中的 tar 文件。我目前的思路是,我需要獲取輸出gzip.NewReader(f)并拉動其輸出的標題,但這不起作用。f, err := os.Open(file)if err != null {  return fmt.Errorf("problem opening %s", filename)}r, _ := gzip.NewReader(f)h, err := GetHeader(r, l)這里,GetHeader是...func GetHeader(r io.Reader, l uint32) (in []byte, err error) {    fmt.Println("Here C")    in = make([]byte, l)    n := 0    n, err = io.ReadFull(r, in)    if err != nil && err != io.EOF && err != io.ErrUnexpectedEOF {        fmt.Println("Here D")        return nil, err    }    fmt.Println(n)    in = in[:n]    return in, nil}它用于成功地自行檢查 Gzip 和 Tar 存檔,總而言之,l設置為uint32 3072.我只能假設我在這里遺漏了一些非常微不足道的東西,但此刻我不知所措。如果有人可以幫助我解決這個問題,將不勝感激。
查看完整描述

1 回答

?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

它應該是

h, err := GetHeader(r, l)

代替

h, err := GetHeader(f, l)


查看完整回答
反對 回復 2022-10-17
  • 1 回答
  • 0 關注
  • 95 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號