Go:使用io.reader从流中删除字节

lmi*_*ika 9 go

Go中跳过多个字节的最佳方法是什么io.Reader?也就是说,有没有这需要一个标准库函数读取计数,将读取并处理从字节读者

用例示例:

func DoWithReader(r io.Reader) {      
    SkipNBytes(r, 30);     // Read and dispose 30 bytes from reader
}
Run Code Online (Sandbox Code Playgroud)

我不需要在流中向后移动,因此任何可以在不转换io.Reader为其他读取器类型的情况下工作的东西都是首选.

fuz*_*fuz 19

你可以使用这种结构:

import "io"
import "io/ioutil"

io.CopyN(ioutil.Discard, yourReader, count)
Run Code Online (Sandbox Code Playgroud)

它将请求的字节数复制到io.Writer丢弃它所读取的内容中.

如果您io.Reader是a io.Seeker,您可能需要考虑在流中寻找跳过要跳过的字节数:

import "io"
import "io/ioutil"

switch r := yourReader.(type) {
case io.Seeker:
    r.Seek(count, io.SeekCurrent)
default:
    io.CopyN(ioutil.Discard, r, count)
}
Run Code Online (Sandbox Code Playgroud)