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

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

Susan Sarandon
发布: 2024-11-29 03:25:12
原创
885 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板