首页 >后端开发 >Golang >如何压缩文件夹内的文件而不将根文件夹包含在存档中?

如何压缩文件夹内的文件而不将根文件夹包含在存档中?

Susan Sarandon
Susan Sarandon原创
2024-11-29 03:25:12883浏览

How to Zip Files Inside a Folder Without Including the Root Folder in the Archive?

压缩文件夹内的内容而不包括根文件夹

问题:压缩文件夹内的文件会导致提取的结构包含根文件夹文件夹,而期望的结果是提取没有根文件夹的文件。

代码尝试:

以下代码尝试压缩目录结构:

func Zipit(source, target string) error {
    zipfile, err := os.Create(target)
    ...
    header.Name = filepath.Join(baseDir, strings.TrimPrefix(path, source))
    ...
}

故障排除:

在提供的代码中,问题在于将 baseDir 添加到 header.Name 的行。要从提取的结构中排除根文件夹,请从文件名中删除 baseDir。

解决方案:

替换以下行:

header.Name = filepath.Join(baseDir, strings.TrimPrefix(path, source))

与:

header.Name = strings.TrimPrefix(path, source)

替代方法:

除了手动修改标头名称之外,您还可以使用以下替代方法在提取过程中排除根文件夹:

walker := filepath.Walk(source, func(path string, info os.FileInfo, err error) error {
    // Ignore the root directory
    if info.IsDir() && path == source {
        return filepath.SkipDir
    }
    ...
})

以上是如何压缩文件夹内的文件而不将根文件夹包含在存档中?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn