Bladeren bron

refactor: 提取可复用函数

HeWang 9 maanden geleden
bovenliggende
commit
379271d7da
1 gewijzigde bestanden met toevoegingen van 45 en 0 verwijderingen
  1. 45 0
      common/util/u_io.go

+ 45 - 0
common/util/u_io.go

@@ -1,6 +1,7 @@
 package util
 
 import (
+	"archive/zip"
 	"fmt"
 	"io"
 	"io/fs"
@@ -260,3 +261,47 @@ func WriteStringToFile(content string, filePath string) {
 	}
 	fmt.Println("字符串成功写入文件(os包)")
 }
+
+// 压缩文件夹
+func AddDirToZip(dirPath string, zipWriter *zip.Writer) error {
+	filepath.Walk(dirPath, func(path string, info os.FileInfo, err error) error {
+		if err != nil {
+			return err
+		}
+
+		if info.IsDir() {
+			return nil
+		}
+
+		file, err := os.Open(path)
+		if err != nil {
+			return err
+		}
+		defer file.Close()
+
+		// 处理路径,确保保留相对路径结构
+		relPath, err := filepath.Rel(dirPath, path)
+		if err != nil {
+			return err
+		}
+		header, err := zip.FileInfoHeader(info)
+		if err != nil {
+			return err
+		}
+
+		header.Name = filepath.ToSlash(relPath)
+
+		writer, err := zipWriter.CreateHeader(header)
+		if err != nil {
+			return err
+		}
+
+		if _, err := io.Copy(writer, file); err != nil {
+			return err
+		}
+
+		return nil
+	})
+
+	return nil
+}