|
|
@@ -97,16 +97,60 @@ func ZipDir(dirPath string, savePath string) error {
|
|
|
}
|
|
|
|
|
|
func UnzipFile(srcFilePath string, destDir string) error {
|
|
|
- fileBytes, err := os.ReadFile(srcFilePath)
|
|
|
+ srcFile, err := os.Open(srcFilePath)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
- return UnzipBytes(fileBytes, destDir)
|
|
|
+ defer func() {
|
|
|
+ err := srcFile.Close()
|
|
|
+ if err != nil {
|
|
|
+ log.Println(err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }()
|
|
|
+
|
|
|
+ srcFileInfo, err := srcFile.Stat()
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ return unzip(srcFile, srcFileInfo.Size(), destDir)
|
|
|
}
|
|
|
|
|
|
func UnzipBytes(zipFileBytes []byte, destDir string) error {
|
|
|
- zipReader, err := zip.NewReader(bytes.NewReader(zipFileBytes), int64(len(zipFileBytes)))
|
|
|
+ return unzip(bytes.NewReader(zipFileBytes), int64(len(zipFileBytes)), destDir)
|
|
|
+}
|
|
|
+
|
|
|
+func writeZipFile(filePath string, zipPath string, zipWriter *zip.Writer) error {
|
|
|
+ file, err := os.Open(filePath)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ defer func() {
|
|
|
+ err := file.Close()
|
|
|
+ if err != nil {
|
|
|
+ log.Println(err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }()
|
|
|
+
|
|
|
+ writer, err := zipWriter.Create(zipPath)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ _, err = io.Copy(writer, file)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+func unzip(r io.ReaderAt, size int64, destDir string) error {
|
|
|
+ zipReader, err := zip.NewReader(r, size)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
@@ -114,11 +158,11 @@ func UnzipBytes(zipFileBytes []byte, destDir string) error {
|
|
|
for _, f := range zipReader.File {
|
|
|
fPath := filepath.Join(destDir, f.Name)
|
|
|
if f.FileInfo().IsDir() {
|
|
|
- if err = os.MkdirAll(fPath, os.ModePerm); err != nil {
|
|
|
+ if err := os.MkdirAll(fPath, os.ModePerm); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
} else {
|
|
|
- if err = os.MkdirAll(filepath.Dir(fPath), os.ModePerm); err != nil {
|
|
|
+ if err := os.MkdirAll(filepath.Dir(fPath), os.ModePerm); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
@@ -148,30 +192,3 @@ func UnzipBytes(zipFileBytes []byte, destDir string) error {
|
|
|
|
|
|
return nil
|
|
|
}
|
|
|
-
|
|
|
-func writeZipFile(filePath string, zipPath string, zipWriter *zip.Writer) error {
|
|
|
- file, err := os.Open(filePath)
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
-
|
|
|
- defer func() {
|
|
|
- err := file.Close()
|
|
|
- if err != nil {
|
|
|
- log.Println(err)
|
|
|
- return
|
|
|
- }
|
|
|
- }()
|
|
|
-
|
|
|
- writer, err := zipWriter.Create(zipPath)
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
-
|
|
|
- _, err = io.Copy(writer, file)
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
-
|
|
|
- return nil
|
|
|
-}
|