問題:壓縮資料夾內的檔案會導致擷取的結構包含根資料夾資料夾,而期望的結果是提取沒有根資料夾的檔案。
代碼嘗試:
以下代碼嘗試壓縮目錄結構:
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中文網其他相關文章!