如何从同一io.Reader读取多次

如何从同一io.Reader读取多次,第1张

如何从同一io.Reader读取多次

io.Reader
被视为流。因此,您无法阅读两次。想象一下传入的TCP连接。您无法倒带进来的内容。

但是您可以使用

io.TeeReader
复制流:

package mainimport (    "bytes"    "io"    "io/ioutil"    "log"    "strings")func main() {    r := strings.NewReader("some io.Reader stream to be readn")    var buf bytes.Buffer    tee := io.TeeReader(r, &buf)    log.Println(ioutil.ReadAll(tee))    log.Println(ioutil.ReadAll(&buf)) }

Go
Playground上的
示例

编辑: 正如@mrclx指出的:您需要从第

TeeReader
一个读取,否则缓冲区将为空。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5125846.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存