gpt4 book ai didi

go - 如何将 HTTP 响应通过管道传输到 Go 中的文件?

转载 作者:IT老高 更新时间:2023-10-28 13:00:03 32 4
gpt4 key购买 nike

如何将以下代码转换为使用流/管道,这样我就不需要将全部内容读入内存?就像是:http.Get("http://example.com/").Pipe("./data.txt")

package main
import ("net/http";"io/ioutil")

func main() {
resp, err := http.Get("http://example.com/")
check(err)
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
check(err)
err = ioutil.WriteFile("./data.txt", body, 0666)
check(err)
}
func check(e error) {
if e != nil {
panic(e)
}
}

最佳答案

io.Copy() 怎么样?其文档可在以下位置找到:http://golang.org/pkg/io/#Copy

不过,这很简单。给它一个 io.Reader 和一个 io.Writer 并复制数据,一次一小块(例如,不是一次全部在内存中)。

所以你可以试着写这样的东西:

func main() {
resp, err := http.Get("...")
check(err)
defer resp.Body.Close()
out, err := os.Create("filename.ext")
if err != nil {
// panic?
}
defer out.Close()
io.Copy(out, resp.Body)
}

我还没有测试过以上;我只是从您上面的示例中快速将其破解,但如果不赚钱,它应该很接近。

关于go - 如何将 HTTP 响应通过管道传输到 Go 中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16311232/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com