我正在嘗試通過添加 goroutines 來處理每個必須存檔的文件來改進構(gòu)建 Zip 的功能。但它以恐慌告終 panic: runtime error: slice bounds out of range [4126:4096]目標(biāo)目錄包含 190 個文件(500 Mo)。我真的不明白出了什么問題,提前感謝您的幫助功能 :func BuildArchive() error { var files []string err := filepath.Walk("/tmp/dir-to-zip", func(filePath string, info os.FileInfo, err error) error { if info.IsDir() { return nil } if err != nil { fmt.Println(err) return err } files = append(files, filePath) return nil }) if err != nil { return err }
1 回答

紅糖糍粑
TA貢獻1815條經(jīng)驗 獲得超6個贊
zip.Writer
同時使用不安全。您啟動多個 goroutines,每個 goroutines 創(chuàng)建和寫入 zip 條目(文件)。
創(chuàng)建使用提供的名稱將文件添加到 zip 文件。它返回應(yīng)寫入文件內(nèi)容的 Writer。
[...]在下一次調(diào)用 Create、CreateHeader 或 Close 之前,必須將文件的內(nèi)容寫入 io.Writer。
您不能同時創(chuàng)建一個 zip。io.Writer
每個 zip 條目的 s 寫入相同的底層文件(或通常相同的文件io.Writer
),即使您的應(yīng)用程序沒有崩潰或崩潰,生成的 zip 存檔也可能無效。
- 1 回答
- 0 關(guān)注
- 152 瀏覽
添加回答
舉報
0/150
提交
取消