【问题标题】:Modyfication of bufio in golanggolang中bufio的修改
【发布时间】:2015-08-19 17:01:56
【问题描述】:

我读取大文件并通过 http POST 发送此文件。 我用的是bufio。

现在我想修改这个文件的第一行,怎么做?

f := bufio.NewReaderSize(os.Stdin, 65536)
bufPart, err := f.Peek(65536))
//how to modify bufPart(f) ?
...
req, err := http.NewRequest("POST", url, f)

【问题讨论】:

  • 一般情况下,您希望使用@kostya suggests 并创建一个修改输入的io.Reader(例如,transform.NewReader 可以进行任意转换)。但是,如果您想依赖未记录的bufio.Peek 行为并且修改不改变长度,您可以直接使用Peek 返回的[]byte。不过它会很丑很脆弱。

标签: go


【解决方案1】:

两种方法:

  1. 创建您自己的 Reader 实现,包装 bufio.Reader 并实现替换逻辑(您必须计算读取字节数)。

  2. 调用 io.Pipe,将返回的 PipeReader 传递给 NewRequest 并启动一个单独的 goroutine,该 goroutine 将从文件中读取数据,对其进行修改并写入返回的 PipeWriter。

希望这是有道理的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    • 2015-03-19
    • 1970-01-01
    相关资源
    最近更新 更多