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