1. bufio包原理
io操作本身的效率并不低,低的是频繁的访问本地磁盘的文件。所以bufio就提供了缓冲区(分配一块内存),读和写都先在缓冲区中,最后再读写文件,来降低访问本地磁盘的次数,从而提高效率。
//reader
s := strings.NewReader("ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890")
br := bufio.NewReader(s)
p := make([]byte, 10)
//writer
b := bytes.NewBuffer(make([]byte, 0))
bw := bufio.NewWriter(b)
//读reader,写入writer
for {
n, err := br.Read(p)
if err == io.EOF {
break
} else {
fmt.Printf("string(p[0:n]): %v\n", string(p[0:n]))
bw.Write(p[0:n])
}
}
bw.Flush()
fmt.Println(b.String())
//或者
//bw.ReadFrom(s)
// bw.Flush() // ReadFrom无需使用Flush,其自己已经写入
//fmt.Println(b) // Hello 世界!