我正在嘗試通過(guò)添加 goroutines 來(lái)處理每個(gè)必須存檔的文件來(lái)改進(jìn)構(gòu)建 Zip 的功能。但它以恐慌告終 panic: runtime error: slice bounds out of range [4126:4096]目標(biāo)目錄包含 190 個(gè)文件(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貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊
zip.Writer
同時(shí)使用不安全。您啟動(dòng)多個(gè) goroutines,每個(gè) goroutines 創(chuàng)建和寫入 zip 條目(文件)。
創(chuàng)建使用提供的名稱將文件添加到 zip 文件。它返回應(yīng)寫入文件內(nèi)容的 Writer。
[...]在下一次調(diào)用 Create、CreateHeader 或 Close 之前,必須將文件的內(nèi)容寫入 io.Writer。
您不能同時(shí)創(chuàng)建一個(gè) zip。io.Writer
每個(gè) zip 條目的 s 寫入相同的底層文件(或通常相同的文件io.Writer
),即使您的應(yīng)用程序沒有崩潰或崩潰,生成的 zip 存檔也可能無(wú)效。
- 1 回答
- 0 關(guān)注
- 139 瀏覽
添加回答
舉報(bào)
0/150
提交
取消