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

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

Susan Sarandon
Susan Sarandon原創
2024-11-29 03:25:12903瀏覽

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn