@@ -16,27 +16,37 @@ func Unzip(zipFile, destPath string) error {
1616 defer archive .Close ()
1717
1818 for _ , f := range archive .File {
19- filePath := path .Join (destPath , f .Name )
20- if f .FileInfo ().IsDir () {
21- os .MkdirAll (filePath , os .ModePerm )
22- continue
23- }
24- if err := os .MkdirAll (filepath .Dir (filePath ), os .ModePerm ); err != nil {
25- return err
26- }
27- dstFile , err := os .OpenFile (filePath , os .O_WRONLY | os .O_CREATE | os .O_TRUNC , f .Mode ())
28- if err != nil {
29- return err
30- }
31- fileInArchive , err := f .Open ()
19+ err := func () error {
20+ filePath := path .Join (destPath , f .Name )
21+ if f .FileInfo ().IsDir () {
22+ os .MkdirAll (filePath , os .ModePerm )
23+ return nil
24+ }
25+ if err := os .MkdirAll (filepath .Dir (filePath ), os .ModePerm ); err != nil {
26+ return err
27+ }
28+
29+ dstFile , err := os .OpenFile (filePath , os .O_WRONLY | os .O_CREATE | os .O_TRUNC , f .Mode ())
30+ if err != nil {
31+ return err
32+ }
33+ defer dstFile .Close ()
34+
35+ fileInArchive , err := f .Open ()
36+ if err != nil {
37+ return err
38+ }
39+ defer fileInArchive .Close ()
40+
41+ if _ , err := io .Copy (dstFile , fileInArchive ); err != nil {
42+ return err
43+ }
44+
45+ return nil
46+ }()
3247 if err != nil {
3348 return err
3449 }
35- if _ , err := io .Copy (dstFile , fileInArchive ); err != nil {
36- return err
37- }
38- dstFile .Close ()
39- fileInArchive .Close ()
4050 }
4151 return nil
4252}
0 commit comments