亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 goroutines panic 構建 Zip,切片邊界超出容量 4096

使用 goroutines panic 構建 Zip,切片邊界超出容量 4096

Go
catspeake 2023-03-21 10:40:11
我正在嘗試通過添加 goroutines 來處理每個必須存檔的文件來改進構建 Zip 的功能。但它以恐慌告終 panic: runtime error: slice bounds out of range [4126:4096]目標目錄包含 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條經驗 獲得超6個贊

zip.Writer同時使用不安全。您啟動多個 goroutines,每個 goroutines 創建和寫入 zip 條目(文件)。

Writer.Create()記錄:

創建使用提供的名稱將文件添加到 zip 文件。它返回應寫入文件內容的 Writer。

[...]在下一次調用 Create、CreateHeader 或 Close 之前,必須將文件的內容寫入 io.Writer。

您不能同時創建一個 zip。io.Writer每個 zip 條目的 s 寫入相同的底層文件(或通常相同的文件io.Writer),即使您的應用程序沒有崩潰或崩潰,生成的 zip 存檔也可能無效。


查看完整回答
反對 回復 2023-03-21
  • 1 回答
  • 0 關注
  • 144 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號