創建zip文件
golang提供了archive/zip
包來處理zip壓縮文件,下面通過一個簡單的示例來展示golang如何創建zip壓縮文件:
func createZip(filename string) {
// 緩存壓縮文件內容
buf := new(bytes.Buffer)
// 創建zip
writer := zip.NewWriter(buf)
defer writer.Close()
// 讀取文件內容
content, _ := ioutil.ReadFile(filepath.Clean(filename))
// 接收
f, _ := writer.Create(filename)
f.Write(content)
filename = strings.TrimSuffix(filename, path.Ext(filename)) + ".zip"
ioutil.WriteFile(filename, buf.Bytes(), 0644)
}
讀取zip文件
讀取zip文檔過程與創建zip文檔過程類似,需要解壓后的文檔目錄結構創建:
func readZip(filename string) {
zipFile, err := zip.OpenReader(filename)
if err != nil {
panic(err.Error())
}
defer zipFile.Close()
for _, f := range zipFile.File {
info := f.FileInfo()
if info.IsDir() {
err = os.MkdirAll(f.Name, os.ModePerm)
if err != nil {
panic(err.Error())
}
continue
}
srcFile, err := f.Open()
if err != nil {
panic(err.Error())
}
defer srcFile.Close()
newFile, err := os.Create( f.Name)
if err != nil {
panic(err.Error())
}
defer newFile.Close()
io.Copy(newFile, srcFile)
}
}