gpt4 book ai didi

go - 如何在go中解压tar.gz文件?

转载 作者:IT王子 更新时间:2023-10-29 01:46:32 26 4
gpt4 key购买 nike

<分区>

我有一个名为file.tar.gz 的文件,里面有一个文件夹。使用go我想解压并保存在当前目录下的文件夹。

我在论坛上找到了这些代码,但它不适用于我的情况。

package main

import (
"archive/tar"
"compress/gzip"
"io"
"log"
"os"
)

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())
}
defer outFile.Close()
if _, err := io.Copy(outFile, tarReader); err != nil {
log.Fatalf("ExtractTarGz: Copy() failed: %s", err.Error())
}
default:
log.Fatalf(
"ExtractTarGz: uknown type: %s in %s",
header.Typeflag,
header.Name)
}
}
}
func main() {
r, err := os.Open("./file.tar.gz")
if err != nil {
log.Fatalf(err.Error())
}
ExtractTarGz(r)
}

它给我错误:

ExtractTarGz: Create() failed: open go/pkg/linux_amd64_race/unicod/utf16.a: too many open files exit status 1 

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com