为了账号安全,请及时绑定邮箱和手机立即绑定

Golang read from pipe 读取大量数据

Golang read from pipe 读取大量数据

Go
呼啦一阵风 2021-09-09 13:51:10
我试图读取就是BEING柏油,流媒体,以标准输入存档,但我不知怎么读远远在管道的数据超过焦油发送。我像这样运行我的命令:tar -cf - somefolder | ./my-go-binary源代码是这样的:package mainimport (    "bufio"    "io"    "log"    "os")// Read from standard inputfunc main() {    reader := bufio.NewReader(os.Stdin)    // Read all data from stdin, processing subsequent reads as chunks.    parts := 0    for {        parts++        data := make([]byte, 4<<20) // Read 4MB at a time        _, err := reader.Read(data)        if err == io.EOF {            break        } else if err != nil {            log.Fatalf("Problems reading from input: %s", err)        }    }    log.Printf("Total parts processed: %d\n", parts)}对于 100MB 的 tarred 文件夹,我得到 1468 个 4MB 的块(即 6.15GB)!此外,data []byte数组有多大似乎并不重要:如果我将块大小设置为 40MB,我仍然会得到大约 1400 个 40MB 的数据块,这完全没有意义。我需要做什么才能os.Stdin使用 Go 正确读取数据吗?
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 159 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信