golang zip 壓縮,解壓(含目錄檔案)

2022-08-20 14:00:10 字數 1915 閱讀 1373

每天學習一點go src。

今天學習了zip包的簡單使用,實現了含目錄的壓縮與解壓。

寫了兩個方法,實現了壓縮、解壓。

package ziptest

import (

"archive/zip"

"io"

"os"

"strings"

)//壓縮檔案

//files 檔案陣列,可以是不同dir下的檔案或者資料夾

//dest 壓縮檔案存放位址

func compress(files *os.file, dest string) error

} return nil

}func compress(file *os.file, prefix string, zw *zip.writer) error

if info.isdir()

for _, fi := range fileinfos

err = compress(f, prefix, zw)

if err != nil

} } else

writer, err := zw.createheader(header)

if err != nil

_, err = io.copy(writer, file)

file.close()

if err != nil

} return nil

}//解壓

func decompress(zipfile, dest string) error

defer reader.close()

for _, file := range reader.file

defer rc.close()

filename := dest + file.name

err = os.mkdirall(getdir(filename), 0755)

if err != nil

w, err := os.create(filename)

if err != nil

defer w.close()

_, err = io.copy(w, rc)

if err != nil

w.close()

rc.close()

} return nil

}func getdir(path string) string

func substring(str string, start, end int) string

if end < start || end > length

return string(rs[start:end])

}

測試**:

package ziptest

import (

"os"

"testing"

)func testcompress(t *testing.t)

defer f1.close()

f2, err := os.open("/home/zzw/test_data/ziptest/readme.notzip")

if err != nil

defer f2.close()

f3, err := os.open("/home/zzw/test_data")

if err != nil

defer f3.close()

var files = *os.file

dest := "/home/zzw/test_data/test.zip"

err = compress(files, dest)

if err != nil

}func testdecompress(t *testing.t)

}

linux刪除目,linux壓縮,解壓

linux刪除目錄很簡單,很多人還是習慣用rmdir,不過一旦目錄非空,就陷入深深的苦惱之中,現在使用rm rf命令即可。直接rm就可以了,不過要加兩個引數 rf 即 rm rf 目錄名字 r 就是向下遞迴,不管有多少級目錄,一併刪除 f 就是直接強行刪除,不作任何提示的意思 1 刪除資料夾例項 將...

壓縮解壓縮

壓縮 壓縮後的檔名 包含物理路徑 待壓縮的資料夾 包含物理路徑 public static void packfiles string filename,string directory catch exception 解壓縮 待解壓檔名 包含物理路徑 解壓到哪個目錄中 包含物理路徑 public ...

壓縮 解壓縮

linux使用最廣泛的壓縮格式位gz,使用gzip命令進行壓縮和解壓縮 1 gzip,gunzip,壓縮 解壓縮檔案,compress or expand files gzip acdfhkllnnrtvv19 s suffix name gunzip acfhkllnnrtvv s suffix ...