我想在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)