英文:
Modyfication of bufio in golang
问题
我正在阅读一个大文件,并通过HTTP POST发送该文件。
我使用bufio。
现在我想修改这个文件的第一行,怎么做?
f := bufio.NewReaderSize(os.Stdin, 65536)
bufPart, err := f.Peek(65536)
//如何修改bufPart(f)?
...
req, err := http.NewRequest("POST", url, f)
英文:
I reading big file and sending this file by http POST.
I use bufio.
And now I want to modify one of first line of this file, how to do it ?
f := bufio.NewReaderSize(os.Stdin, 65536)
bufPart, err := f.Peek(65536))
//how to modify bufPart(f) ?
...
req, err := http.NewRequest("POST", url, f)
答案1
得分: 2
两种方法可以实现:
-
创建自己的 Reader 实现,包装一个 bufio.Reader,并实现替换逻辑(需要计算读取的字节数)。
-
调用 io.Pipe,将返回的 PipeReader 传递给 NewRequest,并启动一个单独的 goroutine 从文件中读取数据,修改后写入返回的 PipeWriter。
希望这样说得清楚。
英文:
Two ideas how to do it:
-
Create your own Reader implementation that wraps an bufio.Reader and implements replacing logic (you will have to count number of read bytes).
-
Call io.Pipe, pass the returned PipeReader to NewRequest and start a separate goroutine that will read data from a file, modify it and write to the returned PipeWriter.
Hope this makes sense.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论