给定一个 io.ReadCloser,例如从 HTTP 请求的响应中,在内存开销和代码可读性方面将响应流式传输到文件的最有效方法是什么?
2 回答
莫回无
TA贡献1865条经验 获得超7个赞
io.Copy在代码方面无疑是最高效的;你只需要
outFile, err := os.Create(filename)
// handle err
defer outFile.Close()
_, err = io.Copy(outFile, res.Body)
// handle err
它在 CPU 和内存方面也可能非常高效。如果需要,您可以查看io.Copy的实现;假设主体没有实现WriteTo并且文件没有实现ReadFrom(快速浏览一下,他们没有实现),Copy将一次复制高达 32kB 的块。更大的块可能会使用更少的 CPU,但会使用更多的内存;他们选择的价值似乎是一个很好的权衡。
- 2 回答
- 0 关注
- 933 浏览
添加回答
举报
0/150
提交
取消