首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Go 标准库:bufio

Go 标准库:bufio

原创
作者头像
孟斯特
发布2023-12-06 14:30:23
发布2023-12-06 14:30:23
6770
举报
文章被收录于专栏:code人生code人生

bufio 包是 Go 语言标准库中的一个包,提供了带缓冲的 I/O 操作,用于提高读写性能。主要的类型包括 ReaderWriterScanner

1. Reader 类型

bufio.Reader 类型提供了带缓冲的读取功能,常用于从输入源(例如文件、网络连接)中读取数据。它的构造函数是 bufio.NewReader

代码语言:go
复制
package main

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

func main() {
	file, err := os.Open("example.txt")
	if err != nil {
		fmt.Println("Error opening file:", err)
		return
	}
	defer file.Close()

	reader := bufio.NewReader(file)

	// 读取一个字节
	char, err := reader.ReadByte()
	if err != nil {
		fmt.Println("Error reading file:", err)
		return
	}
	fmt.Println("Read byte:", char)
}

2. Writer 类型

bufio.Writer 类型提供了带缓冲的写入功能,用于向输出目标(例如文件、网络连接)写入数据。它的构造函数是 bufio.NewWriter

代码语言:go
复制
package main

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

func main() {
	file, err := os.Create("output.txt")
	if err != nil {
		fmt.Println("Error creating file:", err)
		return
	}
	defer file.Close()

	writer := bufio.NewWriter(file)

	// 写入字符串
	message := "Hello, bufio!"
	_, err = writer.WriteString(message)
	if err != nil {
		fmt.Println("Error writing to file:", err)
		return
	}

	// 刷新缓冲区
	err = writer.Flush()
	if err != nil {
		fmt.Println("Error flushing buffer:", err)
		return
	}
}

3. Scanner 类型

bufio.Scanner 类型用于逐行扫描输入源,常用于按行读取文件。它的构造函数是 bufio.NewScanner

代码语言:go
复制
package main

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

func main() {
	file, err := os.Open("example.txt")
	if err != nil {
		fmt.Println("Error opening file:", err)
		return
	}
	defer file.Close()

	scanner := bufio.NewScanner(file)

	// 逐行扫描
	for scanner.Scan() {
		line := scanner.Text()
		fmt.Println("Read line:", line)
	}

	// 检查是否有错误发生
	if err := scanner.Err(); err != nil {
		fmt.Println("Error reading file:", err)
	}
}

我正在参与2023腾讯技术创作特训营第四期有奖征文,快来和我瓜分大奖!


声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。

blog: mengbin

Github: mengbin92

腾讯云开发者社区:孟斯特


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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Reader 类型
  • 2. Writer 类型
  • 3. Scanner 类型
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档