以下のコードをストリーム/パイプを使用するように変換すると、完全な内容をメモリに読み込む必要はありません。 のような何か: http.Get("http://example.com/").Pipe("./data.txt")
GoでHTTP応答をファイルにパイプする方法はありますか?
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)
}
}
Getのレスポンスには、フィールドBody hatがReaderを実装しています。基本的には、これをファイルに書き込む何らかの関数に渡すことができます。あなたがそれを要求した場合を除いて、ボディの内容全体がメモリにロードされることはありません。 – fuz