golang标准库bufio包

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 世界!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容