2018年第一季度,區塊鏈相關人才的招聘需求已達到2017年同期的9.7倍,發布區塊鏈相關崗位的公司數量同比增長4.6倍。
兄弟連教育Go全棧與區塊鏈培訓課程是由清華、微軟和Google名師曆時半年時間研發出的獨一無二的體系化課程。
壓縮檔
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_WRONLY, 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")
}