首页 > 其他分享 >go tar解压 当前目录

go tar解压 当前目录

时间:2022-09-27 19:11:10浏览次数:36  
标签:解压 tar err nil log go os hdr

func main() {
   unTarDir := "." //解压到当前目录
   tarFile, err := os.Open("demo.tar")
   if err != nil {
      log.Fatalln(err)
   }
   tr := tar.NewReader(tarFile)
   for {
      hdr, err := tr.Next()
      if err == io.EOF {
         break // End of archive
      }
      if err != nil {
         log.Fatalln(err)
      }
      if hdr.Typeflag == tar.TypeDir {
         // 创建解压目录
      } else if hdr.Typeflag == tar.TypeReg || hdr.Typeflag == tar.TypeGNUSparse {
         tarFile := path.Join(unTarDir, hdr.Name)
          file, err := os.OpenFile(tarFile, os.O_RDWR|os.O_CREATE|os.O_TRUNC, os.FileMode(hdr.Mode))
          if err != nil {
             log.Fatalln(err)
          }
          err = file.Truncate(hdr.Size)
          if err != nil {
             log.Fatalln(err)
          }
         _, err = io.Copy(file, tr)
         if err != nil {
            log.Fatalln(err)
         }
      }
   }
}

标签:解压,tar,err,nil,log,go,os,hdr
From: https://www.cnblogs.com/cheyunhua/p/16735618.html

相关文章

  • 03-Go设计模式-工厂方法模式
    工厂模式方法模式示例代码/*工厂方法模式抽象工厂(AbstractFactory)角色:工厂方法模式的核心,任何工厂类都必须实现这个接口工厂(ConcreteFactory)角色:具体工厂类是抽象工......
  • 02-Go设计模式-简单工厂
    简单工厂模式示例代码/*简单工厂模式角色和职责工厂(Factory)角色:简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象......
  • Linux命令查找和压缩 find which whereis 和tar
    1 find的命令1.1命令的特点:精确查找实时查找支持查找条件很多各表达式之间使用逻辑运算符,“-a”表示而且(and),“-o”表示或者(or)  查找路径:指定具体目标路......
  • django利用中间件记录接口时长
    #-*-coding:utf-8-*-"""计算每个接口请求时长"""importtimeimportloggingfromdjango.utils.deprecationimportMiddlewareMixin​​classApiTimeMiddleWare(Midd......
  • django rest-framework 自定义异常捕获类
    djangorest-framework自定义异常捕获类环境:django3.2python3先创建文件exceptions.py(文件名称可以自定义)1、重写exception_handler,自定义异常类#-*-coding:ut......
  • Tomcat 执行 startup.bat 出现乱码
    中文乱码中文乱码一定是编码方式不一致导致的,并且不会影响服务的启动!那么为什么还要修改呢?因为,强迫症!!! 解决方法修改logging.properties文件(D:\ProgramFiles(x8......
  • go之new和make
    我们先来看一个例子:funcmain(){ vara*int *a=100 fmt.Println(*a) varbmap[string]int b["沙河娜扎"]=100 fmt.Println(b)}执行上面的代码会引......
  • Generative Adversarial Framework for Cold-Start Item Recommendation阅读笔记
    动机本文是2022年SIGIR上的一篇论文。基于embedding的模型通过用户与物品交互历史学习到用户与物品的表示,但是这种方法对于没有出现在训练数据中的冷物品表现很差,因为冷物......
  • 使用django内置User表,继承AbstractBaseUser
    使用django内置User表,继承AbstractBaseUser本篇文章借鉴:https://blog.csdn.net/qq_29892201/article/details/108258457环境:django3.2python3使用django内置User表,......
  • Go语言基础之切片
    引子因为数组的长度是固定的并且数组长度属于类型的一部分,所以数组有很多的局限性。例如:funcarraySum(x[3]int)int{ sum:=0 for_,v:=rangex{ sum=sum+......