首頁 > 後端開發 > Golang > 如何壓縮資料夾內的檔案而不將根資料夾包含在檔案中?

如何壓縮資料夾內的檔案而不將根資料夾包含在檔案中?

Susan Sarandon
發布: 2024-11-29 03:25:12
原創
903 人瀏覽過

How to Zip Files Inside a Folder Without Including the Root Folder in the Archive?

壓縮資料夾內的內容而不包括根資料夾

問題:壓縮資料夾內的檔案會導致擷取的結構包含根資料夾資料夾,而期望的結果是提取沒有根資料夾的檔案。

代碼嘗試:

以下代碼嘗試壓縮目錄結構:

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板