首页 > 其他分享 >使用bufio Writer时,手动调用Flush()的必要性

使用bufio Writer时,手动调用Flush()的必要性

时间:2022-09-28 11:36:15浏览次数:48  
标签:fmt Writer wr bufio Flush go buf

package main

import (
	"bytes"
	"bufio"
	"fmt"
)

func main() {
	buf := &bytes.Buffer{}

	wr := bufio.NewWriter(buf)
	wr.Write([]byte("1234"))

	fmt.Println("buf:", buf.String())
}

  内容没有写到buf:

go run iotest.go
buf:

  添加Flush:

package main

import (
	"bytes"
	"bufio"
	"fmt"
)

func main() {
	buf := &bytes.Buffer{}

	wr := bufio.NewWriter(buf)
	wr.Write([]byte("1234"))
	wr.Flush()

	fmt.Println("buf:", buf.String())
}

  输出:

go run iotest.go
buf: 1234

  查看这块的源码:

 

 可以看到,只有在buffer写满(默认4KB)后,才会主动调Flush()把buffer内容写入底层io。或者写入的数据很大超过buffer长度,会直接写入底层io。

所以,使用bufio Writer时,在适当位置手动调用Flush()才比较稳妥。

 

标签:fmt,Writer,wr,bufio,Flush,go,buf
From: https://www.cnblogs.com/zxq89/p/16737371.html

相关文章