无法在tar.gz中正确解压缩二进制文件

问题描述

下面的代码尝试下载并解压缩tar.gz文件,然后在其中压缩二进制文件。解压缩似乎出错了,因为完成解压缩并且文件已存在之后,系统(Mac OS X)无法将该文件识别为二进制可执行文件。如果有人能帮助我确定这里出了什么问题,我将非常感谢。 这是代码

        resp,err := svc.Getobject(&s3.GetobjectInput{
            Bucket: aws.String(S3Bucket),Key: aws.String(s3Key),})
        if err != nil { return err }
        defer resp.Body.Close()
        ExtractTarGz(resp.Body)
func ExtractTarGz(gzipStream io.Reader) {
    uncompressedStream,err := gzip.NewReader(gzipStream)
    if err != nil {
        log.Fatal("ExtractTarGz: NewReader Failed")
    }
    tarReader := tar.NewReader(uncompressedStream)
    for true {
        header,err := tarReader.Next()
        if err == io.EOF {
            break
        }
        if err != nil {
            log.Fatalf("ExtractTarGz: Next() Failed: %s",err.Error())
        }

        switch header.Typeflag {
        case tar.TypeDir:
            if err := os.Mkdir(header.Name,0755); err != nil {
                log.Fatalf("ExtractTarGz: Mkdir() Failed: %s",err.Error())
            }
        case tar.TypeReg:
            outFile,err := os.Create(header.Name)
            if err != nil {
                log.Fatalf("ExtractTarGz: Create() Failed: %s",err.Error())
            }
            if _,err := io.copy(outFile,tarReader); err != nil {
                log.Fatalf("ExtractTarGz: copy() Failed: %s",err.Error())
            }
            outFile.Close()

        default:
            log.Fatalf(
                "ExtractTarGz: ukNown type: %s in %s",header.Typeflag,header.Name)
        }

    }
}

(使用Mac的Keka,从tar文件中正常解压缩文件效果很好,并且将解压缩后的文件识别为二进制文件。我已经检查了文件大小,该文件大小与预期的二进制文件相同。 )

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)