前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go-标准库-bufio(一)

Go-标准库-bufio(一)

原创
作者头像
堕落飞鸟
发布2023-04-22 08:58:43
1950
发布2023-04-22 08:58:43
举报
文章被收录于专栏:飞鸟的专栏

Go 标准库中的 bufio 包提供了缓冲读写的功能,它能够减少系统调用的次数,从而提高 I/O 操作的效率。

缓冲读写

缓冲读写是一种将 I/O 操作分成多个步骤进行的方法,它将输入或输出数据先缓存到内存中,等到缓存区满或达到一定数量时,再一次性将数据写入磁盘或读入内存。这种方法可以减少系统调用的次数,提高 I/O 操作的效率。

bufio 包提供了缓冲读写的功能,它包装了一个 io.Readerio.Writer 对象,并提供了 ReaderWriter 两种类型,分别用于读取和写入数据。

缓冲读取

bufio.Reader 类型提供了缓冲读取的功能,它包装了一个 io.Reader 对象,并提供了一系列的方法用于从缓冲区中读取数据。下面是一个简单的缓冲读取示例:

代码语言:javascript
复制
package main

import (
	"bufio"
	"fmt"
	"os"
	"strings"
)

func main() {
	str := "Hello, World!\n"
	reader := bufio.NewReader(strings.NewReader(str))
	for {
		line, err := reader.ReadString('\n')
		if err != nil {
			break
		}
		fmt.Print(line)
	}
}

在上面的示例代码中,我们定义了一个字符串 str,然后使用 strings.NewReader() 函数创建了一个 io.Reader 对象。接着,我们使用 bufio.NewReader() 函数创建了一个 bufio.Reader 对象,并将其包装了 io.Reader 对象。最后,我们使用 ReadString() 方法从缓冲区中读取数据,并打印出来。

缓冲写入

bufio.Writer 类型提供了缓冲写入的功能,它包装了一个 io.Writer 对象,并提供了一系列的方法用于向缓冲区中写入数据。下面是一个简单的缓冲写入示例:

代码语言:javascript
复制
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	file, err := os.Create("output.txt")
	if err != nil {
		panic(err)
	}
	defer file.Close()

	writer := bufio.NewWriter(file)
	for i := 1; i <= 100; i++ {
		fmt.Fprintln(writer, i)
	}
	writer.Flush()
}

在上面的示例代码中,我们使用 os.Create() 函数创建了一个名为 output.txt 的文件。接着,我们使用 bufio.NewWriter() 函数创建了一个 bufio.Writer 对象,并将其包装了文件对象。然后,我们使用 Fprintln() 方法将数字 1 到 100 写入缓冲区中,并使用 Flush() 方法将缓冲区中的数据一次性写入文件中。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 缓冲读写
    • 缓冲读取
      • 缓冲写入
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档