问题:压缩文件夹内的文件会导致提取的结构包含根文件夹文件夹,而期望的结果是提取没有根文件夹的文件。
代码尝试:
以下代码尝试压缩目录结构:
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中文网其他相关文章!