回答

收藏

如何使用 Go 下载大文件?

技术问答 技术问答 311 人阅读 | 0 人回复 | 2023-09-12

有没有办法使用 Go 下载大文件,直接将内容存储在文件中,而不是在写入文件之前将其全部存储在内存中?因为文件太大,所有的内存都会在写入文件之前耗尽。
1 s0 e* X+ ]5 c6 x# H+ U. U% n" x                                                               
' I, Q' `: m+ H1 X0 ~    解决方案:                                                               
- i6 O; T( W1 a# O                                                                我假设你的意思是通过 http 下载(为简单起见省略错误检查):' F( U' Q7 H1 y9 T: V6 a2 R2 D
    import ("net/http"; "io"; "os")...out,err := os.Create("output.txt")defer out.Close()...resp,err := http.Get("http://example.com/")defer resp.Body.Close()...n,err := io.Copy(out,resp.Body)
    / V8 t) C5 F7 f# i  o
http.Response 的 Body 是一个 Reader,所以你可以用任何带 的东西Reader 函数,比如一次读一个块,而不是一次读全部。在这种情况下,io.Copy()为您做一些繁琐的工作。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则