当前位置: GO > go 下载文件

go 下载文件

2021-12-22 分类:GO 作者:admin 阅读(18)

使用 Go 语言下载一个文件,大家一般会怎么做呢,比如,我们要下载 https://www.twle.cn/static/i/img1.jpg 这张图片。

前面的部分,想必很多人都一样,使用 net/http 包下的 http.Get() 方法创建一个到远程图片的请求。

代码一般如下

但接下来呢 ? 实现方式就有很多了

最常见的应该是使用 io/ioutil 包下的 io.WriteFile() 函数直接将响应写入到一个文件中

大家有没有发现这种实现方式有一个弱点? 我们需要使用 ioutil.ReadAll(resp.Body) 先将所有的响应读出来放到内存中。如果文件太大,那么就会消耗很多内存。这样是不明智的。

幸好,io 包提供了 io.Copy() 方法,该方法实现了两个文件句柄之间的拷贝。

io.Copy() 方法

io.Copy() 方法实现了两个文件指针之间的内容拷贝。该方法的原型如下

io.Copy() 方法将副本从 src 复制到 dst ,直到 src 达到文件末尾 ( EOF ) 或发生错误,然后返回复制的字节数和复制时遇到的第一个错误( 如果有 )

有了这个函数,我们就省去了先把内容读取到内存,然后将内存中的内容写到文件的过程,于是,我们的代码就可以改成如下方式

来源:https://www.twle.cn/t/384

「三年博客,如果觉得我的文章对您有用,请帮助本站成长」

赞(0) 打赏

支付宝
微信
0

支付宝
微信
标签:

上一篇:

下一篇:

你可能感兴趣

共有 0 - go 下载文件

博客简介

精彩评论

  • admin(6年前 (2020-03-09))

    分别用不同厚度的筏板定义,画图后这设置筏板变截面处理。 http://f.fwxgx.co...

    评:新文章!
  • admin(6年前 (2020-03-09))

    分别用不同厚度的筏板定义,画图后这设置筏板变截面处理。 http://f.fwxgx.co...

    评:新文章!
  • admin(6年前 (2020-03-09))

    新增一个框架图! http://biji.jinli.vip/wp-content/upl...

    评:新文章!
  • 一位WordPress评论者(6年前 (2020-02-13))

    嗨,这是一条评论。 要开始审核、编辑及删除评论,请访问仪表盘的“评论”页面。 评论者头像来自...

    评:世界,您好!