分享
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。
```
func main() {
fileName :="./test.jpg"
file, _ := os.Create(fileName)
url :="https://alifei05.cfp.cn/creative/vcg/veer/800water/veer-140775274.jpg"
resp, err := http.Get(url)
defer resp.Body.Close()
if err!=nil {
log.Fatal("http get error:",err)
}
writer := bufio.NewWriter(file)
for {
c := make([]byte, 1024)
n, err := resp.Body.Read(c)
if err!=nil{
log.Fatal("read error:",err)
}
fmt.Println(n)
if n< len(c) {
goto loop
}
writer.Write(c[:n])
//1\ 此处flush,下载图片成功
writer.Flush()
}
loop:
//2\ 此处flush,下载图片失败,丢失数据严重
//writer.Flush()
fmt.Println("下载完成")
}
```
**关于bufio的writer,见上面的1处和2处位置的不同。为何每写一个slice,就要flush下才能成功;最后只flush一次,下载的就会有问题。
我看writer.Write(c[:n])的源码如下:**

**其中已经flush过了啊,有些疑惑,请大神们指点一下。**
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信2518 次点击
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传