//声明
buf1 := bytes.NewBufferString("haha")
fmtx.Println("buf1:", buf1)
buf2 := bytes.NewBuffer([]byte("lolo"))
fmtx.Println("buf2:", buf2)
//写入
buf1.WriteString("h2h2")
//从文件写入
file, err := os.Open("./test.txt")
defer file.Close()
if err != nil {
fmtx.Println("file-err:", err)
}
buf1.ReadFrom(file)
fmtx.Println("buf1String:", buf1.String())
//数据写出到file io.Writer
f2, err := os.Create("twrite.txt")
if err != nil {
fmtx.Println("Create-err:", err)
}
buf1.WriteTo(f2)
//read 读取
bufRead := bytes.NewBufferString("hello")
fmt.Println(bufRead.String())
var sRead = make([]byte, 3) // 定义读出的[]byte为3,表示一次可读出3个byte
bufRead.Read(sRead) // 读出
fmt.Println(bufRead.String()) // 打印结果为lo,因为前三个被读出了
fmt.Println(string(sRead)) // 打印结果为hel,读取的是hello的前三个字母
bufRead.Read(sRead) // 接着读,但是bufRead之剩下lo,所以只有lo被读出了
fmt.Println(bufRead.String()) // 打印结果为空
fmt.Println(string(sRead)) // 打印结果lol,前两位的lo表示的本次的读出,因为bufRead只有两位,后面的l还是上次的读出结果
// ReadByte
buf := bytes.NewBufferString("hello")
fmt.Println(buf.String()) // buf.String()方法是吧buf里的内容转成string,>以便于打印
b, _ := buf.ReadByte() // 读取第一个byte,赋值给b
fmt.Println(buf.String()) // 打印 ello,缓冲器头部第一个h被拿掉
fmt.Println(string(b)) // 打印 h
// ReadRune
buf3 := bytes.NewBufferString("好hello")
fmt.Println(buf3.String()) // buf.String()方法是吧buf里的内容转成string,>以便于打印
br, n, _ := buf3.ReadRune() // 读取第一个rune,赋值给b
fmt.Println(buf.String()) // 打印 hello
fmt.Println(string(br)) // 打印中文字: 好,缓冲器头部第一个“好”被拿掉
fmt.Println(n) // 打印3,“好”作为utf8储存占3个byte
brr, n, _ := buf3.ReadRune() // 再读取第一个rune,赋值给b
fmt.Println(buf3.String()) // 打印 ello
fmt.Println(string(brr)) // 打印h,缓冲器头部第一个h被拿掉
fmt.Println(n) // 打印 1,“h”作为utf8储存占1个byte
//ReadBytes 需要分隔符
var d byte = 'e' //分隔符为e
buf4 := bytes.NewBufferString("hello")
fmt.Println(buf4.String()) // buf.String()方法是吧buf里的内容转成string,以便于打印
b4, _ := buf4.ReadBytes(d) // 读到分隔符,并返回给b
fmt.Println(buf4.String()) // 打印 llo,缓冲器被取走一些数据
fmt.Println(string(b4)) // 打印 he,找到e了,将缓冲器从头开始,到e的内容都返回给b
//ReadString 分隔符
var d5 byte = 'e' //分隔符为e
buf5 := bytes.NewBufferString("hello")
fmt.Println(buf5.String()) // buf.String()方法是吧buf里的内容转成string,以便于打印
b5, _ := buf5.ReadString(d5) // 读到分隔符,并返回给b
fmt.Println(buf5.String()) // 打印 llo,缓冲器被取走一些数据
fmt.Println(b5) // 打印 he,找到e了,将缓冲器从头开始,到e的内容都返回给b
//Next 依次读出固定长度的内容
buf6 := bytes.NewBufferString("hello")
fmt.Println(buf6.String())
b6 := buf6.Next(2) // 重头开始,取2个
fmt.Println(buf6.String()) // 变小了
fmt.Println(string(b6)) // 打印he
Go bytes.Buffer
最新推荐文章于 2023-08-23 15:14:47 发布