我正在尝试在 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 关注
- 79 浏览
添加回答
举报
0/150
提交
取消