Go入坑 bufio使用

bufio包实现了有缓冲的I/O,它封装了一个io.Reader或io.Write接口对象,创建一个实现实现了该接口,同时提供缓冲和一些文本I/O的帮助函数.

成都创新互联主营大兴网站建设的网络公司,主营网站建设方案,app软件开发公司,大兴h5小程序制作搭建,大兴网站营销推广欢迎大兴等地区企业咨询

简单的说就是,把文件读取进缓冲(内存)之后再读取的时候就可以避免文件系统的io 从而提高速度。同理,在进行写操作时,先把文件写入缓冲(内存),然后由缓冲写入文件系统。看完以上解释有人可能会表示困惑了,直接把 内容->文件 和 内容->缓冲->文件相比, 缓冲区好像没有起到作用嘛。其实缓冲区的设计是为了存储多次的写入,最后一口气把缓冲区内容写入文件。下面会详细解释

bufio 封装了io.Reader或io.Writer接口对象,并创建另一个也实现了该接口的对象

io.Reader或io.Writer 接口实现read() 和 write() 方法,对于实现这个接口的对象都是可以使用这两个方法的

以下是bufio的简单使用:

func main() {
    fileName := "C:\\Users\\fcl18\\Desktop\\发言.txt"

    file, err := os.Open(fileName)
if err != nil {
        fmt.Println("err", err)
return
    }
    defer file.Close()

// b1 := bufio.NewReader(file)
//1,Read() 高效读取
// p := make([]byte, 1024)
// n1, err1 := b1.Read(p)
// if err1 != nil {
//     fmt.Println("err", err1)
//     return
// }
// fmt.Println(n1)
// fmt.Println(string(p[:n1]))

//2, ReadLine  比较低级
// data, flag, err := b1.ReadLine()
// fmt.Println(data)
// fmt.Println(flag)
// fmt.Println(err)
// fmt.Println(string(data))

//3, ReadString
// str, err := b1.ReadString('\n')//读取一行
// fmt.Println(err)
// fmt.Println(str)
// str1, err1 := b1.ReadString('\n')//再读一行
// fmt.Println(err1)
// fmt.Println(str1)

// for {
//     s, err := b1.ReadString('\n')
//     if err == io.EOF {
//         fmt.Println("读取完毕")
//         break
//     }
//     fmt.Println(s)
// }

//4, ReadByte
// data, err1 := b1.ReadBytes('\n')
// fmt.Println(data)
// fmt.Println(err1)

//Scanln只读取空格前面的数据
// s2 := ""
// fmt.Println("请输入:")
// fmt.Scanln(&s2)
// fmt.Println(s2)

// b2 := bufio.NewReader(os.Stdin)
// s2, _ := b2.ReadString('\n')//通过换行来表示读取完毕
// fmt.Println(s2)

}

文章标题:Go入坑 bufio使用
分享链接:http://azwzsj.com/article/dsoicdj.html