记录一下对文件进行压缩的实现,这里只列出了外围代码

/*函数名:    makeTarGzip        制作压缩包,进步在线传输速率参 数:        encFile ,         密文文件        signFile ,        签名文件返回值:        压缩后文件名        错误信息创立工夫及创建者:        2021-06-15    Yuan_sr*/func makeTarGzip(encFile, signFile string) (string, error){    tarGzipFileName =   "example.tar.gz"        // file write    fw, err := os.Create(tarGzipFileName)    if err != nil {        return "", err    }    defer fw.Close()    // gzip write    gw := gzip.NewWriter(fw)    defer gw.Close()    // tar write    tw := tar.NewWriter(gw)    defer tw.Close()    // 关上文件夹    dir, err := os.Open("./")    if err != nil {        return "", err    }    defer dir.Close()    // 读取文件列表    fis, err := dir.Readdir(0)    if err != nil {        return "", err    }    for _, fi := range fis{        if fi.IsDir(){            continue        }        if fi.Name() == encFile || fi.Name() == signFile{ //去掉这个条件能够实现该目录下所有文件的压缩            ef, err := os.Open(dir.Name() + "/" + fi.Name())            if err != nil {                return "", err            }            defer ef.Close()            //信息头            h := new(tar.Header)            h.Name = fi.Name()            h.Size = fi.Size()            h.Mode = int64(fi.Mode())            h.ModTime = fi.ModTime()            //写信息头            err = tw.WriteHeader(h)            if err != nil {                return "", err            }            _, err = io.Copy(tw, ef)            if err != nil {                return "", err            }        }    }    return tarGzipFileName, err}/*函数名:    unTarGzip        文件解压缩参 数:        tarGzipFile ,     待解压缩文件返回值:        错误信息创立工夫及创建者:        2021-06-15    Yuan_sr*/func unTarGzip (tarGzipFile string) error {    fr, err := os.Open(tarGzipFile)    if err != nil {        return err    }    defer fr.Close()    gr, err := gzip.NewReader(fr)    if err != nil {        return err    }    defer gr.Close()    tr := tar.NewReader(gr)    for {        h, err := tr.Next()        if err == io.EOF {            break        }        if err != nil {            return  err        }        fw, err := os.OpenFile(h.Name, os.O_CREATE | os.O_WRONLY, 0755)        if err != nil {            return err        }        defer fw.Close()        _, err = io.Copy(fw, tr)        if err != nil {            return err        }    }    return nil}