Is it possible to extract a tar.xz package in golang? My understanding is it's possible to use the library for tar and sending it to an xz go library.
3条回答 默认 最新
- dqq9695 2015-07-18 12:13关注
I recently created an XZ decompression package so it is now possible to extract a tar.xz using only Go code.
The following code extracts the file
myfile.tar.xz
to the current directory:package main import ( "archive/tar" "fmt" "io" "log" "os" "github.com/xi2/xz" ) func main() { // Open a file f, err := os.Open("myfile.tar.xz") if err != nil { log.Fatal(err) } // Create an xz Reader r, err := xz.NewReader(f, 0) if err != nil { log.Fatal(err) } // Create a tar Reader tr := tar.NewReader(r) // Iterate through the files in the archive. for { hdr, err := tr.Next() if err == io.EOF { // end of tar archive break } if err != nil { log.Fatal(err) } switch hdr.Typeflag { case tar.TypeDir: // create a directory fmt.Println("creating: " + hdr.Name) err = os.MkdirAll(hdr.Name, 0777) if err != nil { log.Fatal(err) } case tar.TypeReg, tar.TypeRegA: // write a file fmt.Println("extracting: " + hdr.Name) w, err := os.Create(hdr.Name) if err != nil { log.Fatal(err) } _, err = io.Copy(w, tr) if err != nil { log.Fatal(err) } w.Close() } } f.Close() }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 matlab数字图像处理频率域滤波
- ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
- ¥15 ELGamal和paillier计算效率谁快?
- ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
- ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
- ¥15 Arcgis相交分析无法绘制一个或多个图形
- ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
- ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
- ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
- ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误