go
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
go run iotest.go
buf:
添加Flush:
css
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
go run iotest.go
buf: 1234
查看这块的源码:

可以看到,只有在buffer写满(默认4KB)后,才会主动调Flush()把buffer内容写入底层io。或者写入的数据很大超过buffer长度,会直接写入底层io。
所以,使用bufio Writer时,在适当位置手动调用Flush()才比较稳妥。
【迁移】www.cnblogs.com/zxq89/p/167... posted @ 2022-09-28 11:19