golang bufio包学习

//bufio
/*
  bufio包实现了有缓冲的io
  他包装一个io.Reader
  io.Writer
  接口对象
  创建另一个也实现了该接口
  且同时还提供了缓冲
  和一些文本io的帮助函数对象
*/
//用于缓冲一个token 实际需要的最大token尺寸可能小一些
const(
  MaxScanTokenSize = 64*1024
)

var (
   ErrInvalidUnreadByte = errors.New("bufio invalid use of UnreadBYte")
)

//Reader实现了给一个io.Reader接口对象附加缓冲区
type Reader struct{

}

func NewReader(rd io.Reader)*Reader
//从r读取
func NewReaderSize(rd io.Reader, size int)*Reader
//Reset丢弃缓冲中的数据 清除任务错误 将b重设为其下层r读取数据
func (b *Reader)Reset(r io.Reader)
//Buffered 返回缓冲中现有的可读取的字节数
func (b *Reader)Buffered()int
//他不会移动读取的位置
func (b *Reader)Peek(n int)([]byte, error)

//Read读取数据写入p 本方法返回写入p的字节数
func (b *Reader)Read(p []byte)(n int, err error)

func (b *Reader)ReadByte()(c byte, err error)
func (b *Reader)UnreadByte()error
func (b *Reader)ReadLine()(line []byte, isPrefix bool, err error)

type Writer struct{

}
/*
 Writer实现了为 io.Writer接口对象提供缓冲 
 如果在向一个writer类型值写入时遇到错误
 该对象将不再接受任何数据
 且所有写操作都返回该错误
 在有数据都写入后
 调用者有义务调用Flush方法以保证所有的数据都交给了下层io.Writer
*/

你可能感兴趣的:(golang bufio包学习)