@@ -13,51 +13,62 @@ import (
13
13
//@param: filename string, files []string, oldform, newform string
14
14
//@return: error
15
15
16
- func ZipFiles (filename string , files []string , oldform , newform string ) error {
16
+ func ZipFiles (filename string , files []string , oldForm , newForm string ) error {
17
17
18
18
newZipFile , err := os .Create (filename )
19
19
if err != nil {
20
20
return err
21
21
}
22
- defer newZipFile .Close ()
22
+ defer func () {
23
+ _ = newZipFile .Close ()
24
+ }()
23
25
24
26
zipWriter := zip .NewWriter (newZipFile )
25
- defer zipWriter .Close ()
27
+ defer func () {
28
+ _ = zipWriter .Close ()
29
+ }()
26
30
27
31
// 把files添加到zip中
28
32
for _ , file := range files {
29
33
30
- zipfile , err := os .Open (file )
34
+ zipFile , err := os .Open (file )
31
35
if err != nil {
32
36
return err
33
37
}
34
- defer zipfile .Close ()
38
+ err = func () error {
39
+ defer func () {
40
+ _ = zipFile .Close ()
41
+ }()
42
+ // 获取file的基础信息
43
+ info , err := zipFile .Stat ()
44
+ if err != nil {
45
+ return err
46
+ }
35
47
36
- // 获取file的基础信息
37
- info , err := zipfile .Stat ()
38
- if err != nil {
39
- return err
40
- }
48
+ header , err := zip .FileInfoHeader (info )
49
+ if err != nil {
50
+ return err
51
+ }
41
52
42
- header , err := zip .FileInfoHeader (info )
43
- if err != nil {
44
- return err
45
- }
46
-
47
- // 使用上面的FileInforHeader() 就可以把文件保存的路径替换成我们自己想要的了,如下面
48
- header .Name = strings .Replace (file , oldform , newform , - 1 )
53
+ // 使用上面的FileInfoHeader() 就可以把文件保存的路径替换成我们自己想要的了,如下面
54
+ header .Name = strings .Replace (file , oldForm , newForm , - 1 )
49
55
50
- // 优化压缩
51
- // 更多参考see http://golang.org/pkg/archive/zip/#pkg-constants
52
- header .Method = zip .Deflate
56
+ // 优化压缩
57
+ // 更多参考see http://golang.org/pkg/archive/zip/#pkg-constants
58
+ header .Method = zip .Deflate
53
59
54
- writer , err := zipWriter .CreateHeader (header )
60
+ writer , err := zipWriter .CreateHeader (header )
61
+ if err != nil {
62
+ return err
63
+ }
64
+ if _ , err = io .Copy (writer , zipFile ); err != nil {
65
+ return err
66
+ }
67
+ return nil
68
+ }()
55
69
if err != nil {
56
70
return err
57
71
}
58
- if _ , err = io .Copy (writer , zipfile ); err != nil {
59
- return err
60
- }
61
72
}
62
73
return nil
63
74
}
0 commit comments