为了账号安全,请及时绑定邮箱和手机立即绑定

Go 中最有效的方式将 io.ReadCloser 流式传输到文件?

Go 中最有效的方式将 io.ReadCloser 流式传输到文件?

Go
蝴蝶不菲 2021-11-01 10:59:21
给定一个 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,但会使用更多的内存;他们选择的价值似乎是一个很好的权衡。


查看完整回答
反对 回复 2021-11-01
  • 2 回答
  • 0 关注
  • 933 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信