首页 技术 正文
技术 2022年11月19日
0 收藏 764 点赞 4,813 浏览 1616 个字

参考https://studygolang.com/pkgdoc

导入方式:

import "bufio"

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

bufio包的读写模块提供了针对字节或字符串类型的缓冲机制,因此很适合用于读写UTF-8编码的文本文件

1. type Reader

type Reader struct {
buf []byte
rd io.Reader // reader provided by the client
r, w int // buf read and write positions
err error
lastByte int // last byte read for UnreadByte; -1 means invalid
lastRuneSize int // size of last rune read for UnreadRune; -1 means invalid
}

1)func NewReader

func NewReader(s string) *Reader

NewReader创建一个从s读取数据的Reader。本函数类似bytes.NewBufferString,但是更有效率,且为只读的。

其他函数和strings标准库中的Reader的函数使用方法相同,可见https://www.cnblogs.com/user-garcia/p/10316221.html

2)func (*Reader) ReadString

func (b *Reader) ReadString(delim byte) (line string, err error)

ReadString读取直到第一次遇到delim字节,返回一个包含已读取的数据和delim字节的字符串。如果ReadString方法在读取到delim之前遇到了错误,它会返回在错误之前读取的数据以及该错误(一般是io.EOF)。当且仅当ReadString方法返回的切片不以delim结尾时,会返回一个非nil的错误。

举例:

package main
import(
"fmt"
"bufio"
"strings"
"io"
"log"
)
func main() {
reader := bufio.NewReader(strings.NewReader("test bufio's function —— ReadString,\n let's go\n"))
for{
line, err := reader.ReadString('\n')
if err != nil {
if err == io.EOF{
break
}
log.Fatal(err)
}
fmt.Print(line)
}}

返回:

userdeMBP:src user$ go run test.go
test bufio's function —— ReadString,
let's go

2.type Writer

type Writer struct {
err error
buf []byte
n int
wr io.Writer
}

1)func NewWriter

func NewWriter(w io.Writer) *Writer

NewWriter创建一个具有默认大小缓冲、写入w的*Writer。

2)func (*Writer) Flush

func (b *Writer) Flush() error

Flush方法将缓冲中的数据写入下层的io.Writer接口。

举例:

package main
import(
"fmt"
"bufio"
"os"
)
func main() {
writer := bufio.NewWriter(os.Stdout)
fmt.Fprintf(writer, "test ")//等价于Printf()
fmt.Fprintf(writer, "bufio\n")
writer.Flush()
}

返回:

userdeMBP:src user$ go run test.go
test bufio

未完待续

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,076
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,552
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,400
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,176
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,812
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,894