Zip目录没有标题

时间:2018-02-20 10:32:23

标签: go

我使用以下代码来压缩目录,问题是我想要在没有标题的情况下压缩目录内容,例如,我尝试使用basedir而没有成功

dir1
 -file1
 -file2
   -file10

当我解压缩时,我只需要获取

-file1
 -file2
   -file10

这是代码

func Zip(params ...string) error {
        zipfile, err := os.Create(params[1])
        if err != nil {
            return err
        }
        defer zipfile.Close()

        archive := zip.NewWriter(zipfile)
        defer archive.Close()

        info, err := os.Stat(params[0])
        if err != nil {
            return err
        }

        var baseDir string
        if info.IsDir(); len(params) > 2 {
            baseDir = params[2]
        } else {
            baseDir = filepath.Base(params[0])
        }

        if baseDir != "" {
            baseDir += "/"
        }

        filepath.Walk(params[0], func(path string, info os.FileInfo, err error) error {
            if err != nil {
                return err
            }

            if info.IsDir() {
                return nil
            }

            header, err := zip.FileInfoHeader(info)
            if err != nil {
                return err
            }

            if baseDir != "" {
                header.Name = filepath.Join(strings.TrimPrefix(path, baseDir))
            }

            header.Method = zip.Deflate

            writer, err := archive.CreateHeader(header)
            if err != nil {
                return err
            }

            file, err := os.Open(path)
            if err != nil {
                return err
            }
            defer file.Close()
            _, err = io.Copy(writer, file)
            return err
        })

        return err
    }

我用它

Zip("../dir1","../"+zipname+".zip","dir1")

它拉链的问题也是目录名......我怎么能这样做?

0 个答案:

没有答案