我正在嘗試通過添加 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 條目(文件)。
創建使用提供的名稱將文件添加到 zip 文件。它返回應寫入文件內容的 Writer。
[...]在下一次調用 Create、CreateHeader 或 Close 之前,必須將文件的內容寫入 io.Writer。
您不能同時創建一個 zip。io.Writer
每個 zip 條目的 s 寫入相同的底層文件(或通常相同的文件io.Writer
),即使您的應用程序沒有崩潰或崩潰,生成的 zip 存檔也可能無效。
- 1 回答
- 0 關注
- 144 瀏覽
添加回答
舉報
0/150
提交
取消