package main import ( "io" "net/http" "os" ) func main() { imgUrl := "https://www.baidu.cn/static/i/img1.jpg" // Get the data resp, err := http.Get(imgUrl) if err != nil { panic(err) } defer resp.Body.Close() // 创建一个文件用于保存 out, err := os.Create("img1.jpg") if err != nil { panic(err) } defer out.Close() // 然后将响应流和文件流对接起来 _, err = io.Copy(out, resp.Body) if err != nil { panic(err) } }
io.Copy()
方法实现了两个文件指针之间的内容拷贝。该方法的原型如下
func Copy(dst Writer, src Reader) (written int64, err error)
io.Copy()
方法将副本从 src
复制到 dst
,直到 src
达到文件末尾 ( EOF ) 或发生错误,然后返回复制的字节数和复制时遇到的第一个错误( 如果有 )
有了这个函数,我们就省去了先把内容读取到内存,然后将内存中的内容写到文件的过程