golang标准库bufio包

2023-08-03  本文已影响0人  超鸽带你飞

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

上一篇 下一篇

猜你喜欢

热点阅读