如何使用compress / gzip和archive / tar创建压缩的tar档案?

德弗曼

我正在尝试使用Go标准库创建压缩的tar存档,特别是compress / gzip和archive / tar。我可以成功创建tar归档文件,但是当我尝试压缩所述归档文件时,无法解压缩生成的tarball。在OSX上,我收到“错误1-不允许进行操作”

要运行此代码,您将需要foo.txt在同一目录中命名一个文件

package main

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

func main() {
    var b bytes.Buffer

    // Create a new zip archive.
    w := tar.NewWriter(gzip.NewWriter(&b))

    fi, err := os.Stat("foo.txt")

    if err != nil {
        log.Fatal(err)
    }

    header, err := tar.FileInfoHeader(fi, "")

    if err != nil {
        log.Fatal(err)
    }

    err = w.WriteHeader(header)

    if err != nil {
        log.Fatal(err)
    }

    contents, err := ioutil.ReadFile("foo.txt")

    if err != nil {
        log.Fatal(err)
    }

    _, err = w.Write(contents)

    if err != nil {
        log.Fatal(err)
    }

    err = w.Close()

    // Make sure to check the error on Close.
    err = ioutil.WriteFile("foo.tar.gz", b.Bytes(), 0666)

    if err != nil {
        log.Fatal(err)
    }
}
不可思议的

您需要关闭基础gzip编写器,以确保可以将所有字节都刷新到文件中。像这样:

    // gzip writer
    gz := gzip.NewWriter(f)

    // Create a new tar archive.
    w := tar.NewWriter(gz)

    // add things to the tar archive
    // ...

    // make sure the gzip writer flushes any pending bytes
    if err = gz.Close(); err != nil {
            log.Fatal(err)
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

How to create a compressed tar archives using compress/gzip and archive/tar?

来自分类Dev

tar如何读取文件以创建档案?

来自分类Dev

如何防止tar创建空档案?

来自分类Dev

如何使用各种技术解压缩/解压压缩/归档的文件-zip,rar,gzip,tar

来自分类Dev

Tar:如何忽略档案本身

来自分类Dev

如何使用带有gzip压缩选项的pandas read_csv读取tar.gz文件?

来自分类Dev

Python tarfile:如何在遵循符号链接的情况下使用tar + gzip压缩?

来自分类Dev

Python tarfile:如何在遵循符号链接的情况下使用tar + gzip压缩?

来自分类Dev

使用PHP列出.7z,.rar和.tar档案中的文件

来自分类Dev

使用tar命令创建带有日期的压缩目录

来自分类Dev

如何使用gunzip和tar将tar.gz文件解压缩到所需的特定目录?

来自分类Dev

如何防止tar覆盖现有档案?

来自分类Dev

如何检查/测试.tar.bz档案?

来自分类Dev

如何检查/测试.tar.bz档案?

来自分类Dev

如何防止tar覆盖现有档案?

来自分类Dev

使用Apache Commons Compress解压缩tar文件

来自分类Dev

如何在perl中读取gzip和tar文件

来自分类Dev

使用一个命令解压缩.txz和.tar中压缩的文件

来自分类Dev

使用tar压缩ls结果

来自分类Dev

如何使用git-archive创建确定性的tar.gz?

来自分类Dev

使用命令“ gzip”创建档案

来自分类Dev

使用命令“ gzip”创建档案

来自分类Dev

如何重复解压缩tar本身内的tar文件

来自分类Dev

tar档案创建日期错误

来自分类Dev

tar.gz在压缩之前或之后将gzip文件压缩到tar中吗?

来自分类Dev

压缩存档-使用tar -czf创建并仅使用-xf提取吗?

来自分类Dev

用nice和tar设置压缩级别

来自分类Dev

tar:压缩文本stdin和stdout

来自分类Dev

无法使用xz压缩目录将tar创建到另一个目录

Related 相关文章

  1. 1

    How to create a compressed tar archives using compress/gzip and archive/tar?

  2. 2

    tar如何读取文件以创建档案?

  3. 3

    如何防止tar创建空档案?

  4. 4

    如何使用各种技术解压缩/解压压缩/归档的文件-zip,rar,gzip,tar

  5. 5

    Tar:如何忽略档案本身

  6. 6

    如何使用带有gzip压缩选项的pandas read_csv读取tar.gz文件?

  7. 7

    Python tarfile:如何在遵循符号链接的情况下使用tar + gzip压缩?

  8. 8

    Python tarfile:如何在遵循符号链接的情况下使用tar + gzip压缩?

  9. 9

    使用PHP列出.7z,.rar和.tar档案中的文件

  10. 10

    使用tar命令创建带有日期的压缩目录

  11. 11

    如何使用gunzip和tar将tar.gz文件解压缩到所需的特定目录?

  12. 12

    如何防止tar覆盖现有档案?

  13. 13

    如何检查/测试.tar.bz档案?

  14. 14

    如何检查/测试.tar.bz档案?

  15. 15

    如何防止tar覆盖现有档案?

  16. 16

    使用Apache Commons Compress解压缩tar文件

  17. 17

    如何在perl中读取gzip和tar文件

  18. 18

    使用一个命令解压缩.txz和.tar中压缩的文件

  19. 19

    使用tar压缩ls结果

  20. 20

    如何使用git-archive创建确定性的tar.gz?

  21. 21

    使用命令“ gzip”创建档案

  22. 22

    使用命令“ gzip”创建档案

  23. 23

    如何重复解压缩tar本身内的tar文件

  24. 24

    tar档案创建日期错误

  25. 25

    tar.gz在压缩之前或之后将gzip文件压缩到tar中吗?

  26. 26

    压缩存档-使用tar -czf创建并仅使用-xf提取吗?

  27. 27

    用nice和tar设置压缩级别

  28. 28

    tar:压缩文本stdin和stdout

  29. 29

    无法使用xz压缩目录将tar创建到另一个目录

热门标签

归档