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

如何在 Go 中压缩文件夹内容而不包含根文件夹?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-17 21:46:01774浏览

How to Zip Folder Content in Go Without Including the Root Folder?

从排除根文件夹的文件夹中压缩内容

在 Go 中,可以使用 zip 来压缩目录中的内容,同时排除根文件夹.作家。

问题描述

原始代码旨在将目录(“dir1”)的内容压缩到“dir1.zip”中。但是,提取后,压缩文件保留“dir1”文件夹结构作为其根目录。目标是在提取时消除根文件夹。

解决方案

要实现此目的,我们需要修改 zip.Writer 中的 header.Name 字段。该字段确定存档中文件的名称。在原始代码中,该字段设置如下:

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

此代码确保文件名包含baseDir(“dir1”)和文件相对于源目录的路径(“path/dir1”) )。但是,要在解压后删除根文件夹,我们需要省略baseDir:

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

通过此修改,压缩文件将直接位于存档的根目录下,并且它们不会有“ dir1”文件夹作为提取时的根目录。

结果

通过省略根据 header.Name 字段中的 baseDir,“dir1”目录的内容将被压缩到“dir1.zip”中,而不包含根文件夹。这允许用户直接提取文件,而无需浏览“dir1”文件夹。

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

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