package main
import (
"archive/tar"
"compress/gzip"
"io"
"os"
)
func main() {
Compress("01.png", "02.tar.gz")
}
func Compress(file string, dest string) error {
f, err := os.Open(file)
if err != nil {
return err
}
defer f.Close()
d, err := os.Create(dest)
if err != nil {
return err
}
defer d.Close()
gw := gzip.NewWriter(d)
defer gw.Close()
tw := tar.NewWriter(gw)
defer tw.Close()
info, err := f.Stat()
if err != nil {
return err
}
header, err := tar.FileInfoHeader(info, "")
if err != nil {
return err
}
err = tw.WriteHeader(header)
if err != nil {
return err
}
_, err = io.Copy(tw, f)
if err != nil {
return err
}
return nil
}