從排除根資料夾的資料夾中壓縮內容
在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中文網其他相關文章!