首頁  >  文章  >  後端開發  >  如何在 Go 中壓縮資料夾內容而不包含根資料夾?

如何在 Go 中壓縮資料夾內容而不包含根資料夾?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-17 21:46:01692瀏覽

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