我正在尝试通过添加 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 关注
- 116 浏览
添加回答
举报
0/150
提交
取消