培训首页  >  web前端新闻  >  兄弟连区块链培训分享Go语言压缩与解压

兄弟连区块链培训分享Go语言压缩与解压

[2018-08-29 15:43:24] 浏览量:146 来源:

北京兄弟连IT

  2018年第一季度,区块链相关人才的招聘需求已达到2017年同期的9.7倍,发布区块链相关岗位的公司数量同比增长4.6倍。

 

  兄弟连教育Go全栈与区块链培训课程是由清华、微软和谷歌名师历时半年时间研发出的独一无二的体系化课程。

压缩文件

 

package main

  

import (

    "fmt"

    "os"

    "io"

    "archive/tar"

    "compress/gzip"

)

  

func main() {

    // file write

    fw, err := os.Create("tar/lin_golang_src.tar.gz")

    if err != nil {

        panic(err)

    }

    defer fw.Close()

  

    // gzip write

    gw := gzip.NewWriter(fw)

    defer gw.Close()

  

    // tar write

    tw := tar.NewWriter(gw)

    defer tw.Close()

  

    // 打开文件夹

    dir, err := os.Open("file/")

    if err != nil {

        panic(nil)

    }

    defer dir.Close()

  

    // 读取文件列表

    fis, err := dir.Readdir(0)

    if err != nil {

        panic(err)

    }

  

    // 遍历文件列表

    for _, fi := range fis {

        // 逃过文件夹我这里就不递归了

        if fi.IsDir() {

            continue

        }

  

        // 打印文件名称

        fmt.Println(fi.Name())

  

        // 打开文件

        fr, err := os.Open(dir.Name() + "/" + fi.Name())

        if err != nil {

            panic(err)

        }

        defer fr.Close()

  

        // 信息头

        h := new(tar.Header)

        h.Name = fi.Name()

        h.Size = fi.Size()

        h.Mode = int64(fi.Mode())

        h.ModTime = fi.ModTime()

  

        // 写信息头

        err = tw.WriteHeader(h)

        if err != nil {

            panic(err)

        }

  

        // 写文件

        _, err = io.Copy(tw, fr)

        if err != nil {

            panic(err)

        }

    }

  

    fmt.Println("tar.gz ok")

}

解压缩文件

 

package main

  

import (

    "fmt"

    "os"

    "io"

    // "time"

    "archive/tar"

    "compress/gzip"

)

  

func main() {

    // file read

    fr, err := os.Open("tar/lin_golang_src.tar.gz")

    if err != nil {

        panic(err)

    }

    defer fr.Close()

  

    // gzip read

    gr, err := gzip.NewReader(fr)

    if err != nil {

        panic(err)

    }

    defer gr.Close()

  

    // tar read

    tr := tar.NewReader(gr)

  

    // 读取文件

    for {

        h, err := tr.Next()

        if err == io.EOF {

            break

        }

        if err != nil {

            panic(err)

        }

  

        // 显示文件

        fmt.Println(h.Name)

  

        // 打开文件

        fw, err := os.OpenFile("file2/" + h.Name, os.O_CREATE | os.O_WRON, 0644/*os.FileMode(h.Mode)*/)

        if err != nil {

            panic(err)

        }

        defer fw.Close()

  

        // 写文件

        _, err = io.Copy(fw, tr)

        if err != nil {

            panic(err)

        }

          

    }

  

    fmt.Println("un tar.gz ok")

}

文中图片素材来源网络,如有侵权请联系删除
  • 软件开发
  • 软件测试
  • 数据库
  • Web前端
  • 大数据
  • 人工智能
  • 零基础
  • 有HTML基础
  • 有PHP基础
  • 有C语言基础
  • 有JAVA基础
  • 其他计算机语言基础
  • 周末班
  • 全日制白班
  • 随到随学

网上报名

热门信息