日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

压缩文件和解压文件

發(fā)布時(shí)間:2024/1/17 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 压缩文件和解压文件 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

壓縮文件:

復(fù)制代碼代碼如下: 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")
}

?

解壓文件:

復(fù)制代碼代碼如下: 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")
}

轉(zhuǎn)載于:https://www.cnblogs.com/craneboos/p/8440426.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的压缩文件和解压文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。