美文网首页
golang标准库bufio包

golang标准库bufio包

作者: 超鸽带你飞 | 来源:发表于2023-08-03 16:55 被阅读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 世界!
    
    

    相关文章

      网友评论

          本文标题:golang标准库bufio包

          本文链接:https://www.haomeiwen.com/subject/ubbmpdtx.html