小编Mad*_*azy的帖子

如何将目录[不仅仅是其中的文件]写入golang中的tar.gz文件

我想在Go中编写一个tar_gz工具.输入就像linux命令:

$tar czvf targetFileName inputDirectoryPath
Run Code Online (Sandbox Code Playgroud)

假设我有一个inputDirectory结构如下:

test [dir]
-- 0.txt
    -- 1 [sub dir]
         -- 1.txt
Run Code Online (Sandbox Code Playgroud)

例如:使用命令:

$tar czvf test.tar.gz test/
Run Code Online (Sandbox Code Playgroud)

我们可以tar和gzip整个测试目录.


我的问题是我可以写一个tar和gz路由来递归迭代测试目录中的所有文件并将文件写入test.tar.gz文件.但我不知道如何将目录写入test.tar.gz. 运行我的程序后,test.tar.gz文件中的结构是:

0.txt
1.txt
Run Code Online (Sandbox Code Playgroud)

谁能告诉我如何以递归方式将目录写入输出tar.gz文件.非常感谢.

    package main

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

    func handleError( _e error ) {
      if _e != nil {
        log.Fatal( _e )
      }
    }

    func TarGzWrite( _path string, tw *tar.Writer, fi os.FileInfo ) {
      fr, err := os.Open( _path )
      handleError( err )
      defer fr.Close()

      h := new( tar.Header …
Run Code Online (Sandbox Code Playgroud)

gzip tar go

9
推荐指数
2
解决办法
5748
查看次数

标签 统计

go ×1

gzip ×1

tar ×1