我正在嘗試在 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 回答
- 0 關注
- 95 瀏覽
添加回答
舉報
0/150
提交
取消