// Deal with file func zipFile(srcFile string, recPath string, zw *zip.Writer, fi os.FileInfo) { if fi.IsDir() { // Create zip header fh := new(zip.FileHeader) fh.Name = recPath + "/" fh.UncompressedSize = 0 _, err := zw.CreateHeader(fh) handleError(err) } else { // Create zip header fh := new(zip.FileHeader) fh.Name = recPath fh.UncompressedSize = uint32(fi.Size()) fw, err := zw.CreateHeader(fh) handleError(err) // Read file data buf := make([]byte, fi.Size()) f, err := os.Open(srcFile) handleError(err) _, err = f.Read(buf) handleError(err) // Write file data to zip _, err = fw.Write(buf) handleError(err) } }
func packFile(srcFile string, recPath string, zw *zip.Writer, fi os.FileInfo) (err error) { if fi.IsDir() { // Create zip header fh := new(zip.FileHeader) fh.Name = recPath + "/" fh.UncompressedSize = 0 _, err = zw.CreateHeader(fh) } else { // Create zip header fh := new(zip.FileHeader) fh.Name = recPath fh.UncompressedSize = uint32(fi.Size()) fh.SetMode(fi.Mode()) var fw io.Writer fw, err = zw.CreateHeader(fh) if err != nil { return err } var f *os.File f, err = os.Open(srcFile) if err != nil { return err } _, err = io.Copy(fw, f) } return err }