github.com/aarzilli/tools@v0.0.0-20151123112009-0d27094f75e0/os/osutilpb/create_zip.go (about)

     1  package osutilpb
     2  
     3  import (
     4  	"archive/zip"
     5  	"bytes"
     6  	"io/ioutil"
     7  	"log"
     8  	"os"
     9  )
    10  
    11  func CreateZipFile(files []string, archiveName string) {
    12  
    13  	buf := new(bytes.Buffer)
    14  	w := zip.NewWriter(buf)
    15  
    16  	// Add some files to the archive.
    17  	for _, fn := range files {
    18  
    19  		fi, err := os.Stat(fn)
    20  		if err != nil {
    21  			log.Fatal(err)
    22  		}
    23  
    24  		if !fi.IsDir() {
    25  			bts, err := ioutil.ReadFile(fn)
    26  			if err != nil {
    27  				log.Fatal(err)
    28  			}
    29  
    30  			f, err := w.Create(fn)
    31  			if err != nil {
    32  				log.Fatal(err)
    33  			}
    34  
    35  			_, err = f.Write(bts)
    36  			if err != nil {
    37  				log.Fatal(err)
    38  			}
    39  
    40  		}
    41  
    42  	}
    43  
    44  	err := w.Close()
    45  	if err != nil {
    46  		log.Fatal(err)
    47  	}
    48  
    49  	err = ioutil.WriteFile(archiveName, buf.Bytes(), 0777)
    50  	if err != nil {
    51  		log.Fatal(err)
    52  	}
    53  
    54  }