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

 淡淡笑嘻嘻 发布于 2023-02-13 15:05

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

用例示例:

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

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

1 个回答
  • 你可以使用这种结构:

    import "io"
    import "io/ioutil"
    
    io.CopyN(ioutil.Discard, yourReader, count)
    

    它将请求的字节数复制到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)
    }
    

    2023-02-13 15:07 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有