From 24e2448f2c17054f4596696df067b156f4bca953 Mon Sep 17 00:00:00 2001 From: liuxiaolong <736321739@qq.com> Date: 星期五, 20 十二月 2019 19:02:27 +0800 Subject: [PATCH] add log --- extend/util/util.go | 65 +++++++++++++++++++++++++++----- 1 files changed, 55 insertions(+), 10 deletions(-) diff --git a/extend/util/util.go b/extend/util/util.go index 9ff0e64..fb6623e 100644 --- a/extend/util/util.go +++ b/extend/util/util.go @@ -303,30 +303,74 @@ return nil } -func TarGzCheck(filePath string) bool { - f, err := os.Open(filePath) +//鍘嬬缉 浣跨敤gzip鍘嬬缉鎴恡ar.gz +func TarCompress(files []*os.File, dest string) error { + d, _ := os.Create(dest) + defer d.Close() + gw := gzip.NewWriter(d) + defer gw.Close() + tw := tar.NewWriter(gw) + defer tw.Close() + for _, file := range files { + err := gzipCompress(file, "", tw) + if err != nil { + return err + } + } + return nil +} + +func gzipCompress(file *os.File, prefix string, tw *tar.Writer) error { + info, err := file.Stat() if err != nil { - return false + return err } - defer f.Close() - buf := make([]byte, 4) - if n, err := f.Read(buf); err != nil || n < 4 { - return false + if info.IsDir() { + prefix = prefix + "/" + info.Name() + fileInfos, err := file.Readdir(-1) + if err != nil { + return err + } + for _, fi := range fileInfos { + f, err := os.Open(file.Name() + "/" + fi.Name()) + if err != nil { + return err + } + err = gzipCompress(f, prefix, tw) + if err != nil { + return err + } + } + } else { + header, err := tar.FileInfoHeader(info, "") + header.Name = prefix + "/" + header.Name + if err != nil { + return err + } + err = tw.WriteHeader(header) + if err != nil { + return err + } + _, err = io.Copy(tw, file) + file.Close() + if err != nil { + return err + } } - fType := hex.EncodeToString(buf) - logger.Debug("file type :",fType) - return fType == "8b1f" + return nil } //瑙e帇 tar.gz func DeCompress(tarFile, dest string) error { srcFile, err := os.Open(tarFile) if err != nil { + logger.Debug("open tarFile err:",err) return err } defer srcFile.Close() gr, err := gzip.NewReader(srcFile) if err != nil { + logger.Debug("gzip.NewReader err:",err) return err } defer gr.Close() @@ -343,6 +387,7 @@ filename := dest + hdr.Name file, err := createFile(filename) if err != nil { + logger.Debug("createFile err:",err) return err } io.Copy(file, tr) -- Gitblit v1.8.0