@@ -13,51 +13,60 @@ import (
1313//@param: filename string, files []string, oldform, newform string
1414//@return: error
1515
16- func ZipFiles (filename string , files []string , oldform , newform string ) error {
16+ func ZipFiles (filename string , files []string , oldForm , newForm string ) error {
1717
1818 newZipFile , err := os .Create (filename )
1919 if err != nil {
2020 return err
2121 }
22- defer newZipFile .Close ()
22+ defer func () {
23+ _ = newZipFile .Close ()
24+ }()
2325
2426 zipWriter := zip .NewWriter (newZipFile )
25- defer zipWriter .Close ()
27+ defer func () {
28+ _ = zipWriter .Close ()
29+ }()
2630
2731 // 把files添加到zip中
2832 for _ , file := range files {
2933
30- zipfile , err := os . Open (file )
31- if err != nil {
32- return err
33- }
34- defer zipfile . Close ()
35-
36- // 获取file的基础信息
37- info , err := zipfile .Stat ()
38- if err != nil {
39- return err
40- }
34+ err = func (file string ) error {
35+ zipFile , err := os . Open ( file )
36+ if err != nil {
37+ return err
38+ }
39+ defer zipFile . Close ()
40+ // 获取file的基础信息
41+ info , err := zipFile .Stat ()
42+ if err != nil {
43+ return err
44+ }
4145
42- header , err := zip .FileInfoHeader (info )
43- if err != nil {
44- return err
45- }
46+ header , err := zip .FileInfoHeader (info )
47+ if err != nil {
48+ return err
49+ }
4650
47- // 使用上面的FileInforHeader() 就可以把文件保存的路径替换成我们自己想要的了,如下面
48- header .Name = strings .Replace (file , oldform , newform , - 1 )
51+ // 使用上面的FileInforHeader() 就可以把文件保存的路径替换成我们自己想要的了,如下面
52+ header .Name = strings .Replace (file , oldForm , newForm , - 1 )
4953
50- // 优化压缩
51- // 更多参考see http://golang.org/pkg/archive/zip/#pkg-constants
52- header .Method = zip .Deflate
54+ // 优化压缩
55+ // 更多参考see http://golang.org/pkg/archive/zip/#pkg-constants
56+ header .Method = zip .Deflate
5357
54- writer , err := zipWriter .CreateHeader (header )
58+ writer , err := zipWriter .CreateHeader (header )
59+ if err != nil {
60+ return err
61+ }
62+ if _ , err = io .Copy (writer , zipFile ); err != nil {
63+ return err
64+ }
65+ return nil
66+ }(file )
5567 if err != nil {
5668 return err
5769 }
58- if _ , err = io .Copy (writer , zipfile ); err != nil {
59- return err
60- }
6170 }
6271 return nil
6372}
0 commit comments