拆分io.Reader - 使用ReadWriter?

时间:2015-01-06 18:55:16

标签: go

假设以下示例:

func Execute(r io.Reader) {
    // do soemthing
}

func BatchFromCSV(cr csv.Reader, batchSize int) {
    n := 0
    for {
        r, err := cr.Read()
        if err != nil {
            if err != io.EOF {
                panic(err)
            }
            break
        }

        n = n + 1

        // Execute() when batchSize == n
    }
}

有没有办法分割传入的阅读器而不创建某种缓冲区,然后使用bytes / string.NewReader()?这是ReadWriter的地方吗?如果是这样,我如何实现readWriter?

1 个答案:

答案 0 :(得分:-1)

如果csv文件适合内存,只需调用ReadAll(),然后按照您认为合适的方式拆分记录片段。

如果您不想一次使用整个文件,请通过为每个文件调用Read()来累积您想要处理的许多记录。