archive/zip


zip 包提供了 zip 档案文件的读写

  • 打包 a.txt b.txt 到 ab.zip
func Zip() {
	// 创建 ab.zip 文件
	target, err := os.OpenFile("archive/files/ab.zip", os.O_CREATE|os.O_WRONLY, 0644)
	if err != nil {
		log.Fatalln(err)
	}
	defer target.Close()
	zw := zip.NewWriter(target)
	defer zw.Close()
	files := []string{"archive/files/a.txt", "archive/files/b.txt"}
	for _, fileName := range files {
		file, err := os.Open(fileName)
		if err != nil {
			log.Fatalln(err)
		}
		fileInfo, err := file.Stat()
		if err != nil {
			log.Fatalln(err)
		}
		f, err := zw.Create(fileInfo.Name())
		if err != nil {
			log.Fatal(err)
		}
		// 读取文件内容并写入 zip 文件
		if _, err := io.Copy(f, file); err != nil {
			log.Fatalln(err)
		}
		file.Close()
	}
}
  • 解压 ab.zip


func Unzip() {
	// 解压 archive/files/ab.zip 文件
	zipFile, err := zip.OpenReader("archive/files/ab.zip")
	if err != nil {
		log.Fatal(err)
	}
	defer zipFile.Close()
	for _, f := range zipFile.File {
		fmt.Printf("Contents of %s:\n", f.Name)
		rc, err := f.Open()
		if err != nil {
			log.Fatal(err)
		}
		defer rc.Close()
		for {
			_, err = io.CopyN(os.Stdout, rc, 68)
			if err == io.EOF {
				break
			}
			if err != nil {
				log.Fatalln(err)
			}
		}
		fmt.Println()
	}
}
如有疑问关注公众号给我留言
wx

关注公众号

©2017-2023 鲁ICP备17023316号-1 Powered by Hugo