从排除根文件夹的文件夹中压缩内容
在 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中文网其他相关文章!