一尘不染

从golang中的缓冲读取器读取特定数量的字节

go

我知道 bufio 包中的golang中的特定功能。

func (b *Reader) Peek(n int) ([]byte, error)

Peek返回下一个n个字节, 而不会使阅读器前进
。在下一个读取调用中,字节停止有效。如果Peek返回的字节数少于n个字节,则它还会返回一个错误,解释读取短的原因。如果n大于b的缓冲区大小,则错误为ErrBufferFull。

我需要能够从阅读器读取特定数量的字节,以 使阅读器更先进 。基本上,与上面的功能相同,但是它使阅读器更高级。有人知道如何做到这一点吗?


阅读 247

收藏
2020-07-02

共1个答案

一尘不染

请注意,该bufio.Read方法io.Read最多调用一次基础,这意味着它可以返回n < len(p),而不会到达EOF。如果您想精确地读取len(p)字节或由于错误而失败,则可以这样使用io.ReadFull

n, err := io.ReadFull(reader, p)

即使读取器已缓冲,此操作也有效。

2020-07-02