您好,我想将下载的文件原始响应附加到文件。假设我正在尝试下载一个 1GB 的文件,并且下载过程将在多个请求中完成。比方说每个请求 100mb。现在,所有 10 个部分都应该放入一个文件中以供读取。我不知道如何实现这一目标。我正在使用 GOREQ 请求此资源,原始数据采用 Goreq.body 格式。下面是我的示例代码
newFile := "./newfile.gz"
out, err := os.Create(newFile)
defer out.close()
if err != nil {
fmt.Println("Failed to download file")
return
}
for i := 0; i < 10; i++ {
// This will return the items in part of 100mb/part.
// GetRawDataFromEbay returns a goreq.body(raw) as its response
response, _ = GetRawDataFromEbay(10485760)
out.Write(response) // This does not work
}
我知道 Write 接受 []byte 作为参数。但是如何将检索到的 goreq.body 原始数据附加到文件中呢?
最佳答案
您可以使用 fileObj.WriteAt(content, offSet) 将内容附加到文件中。
package main
import (
"fmt"
"os"
)
func main() {
fmt.Println("test")
f, err := os.Create("/Users/sakthi-2528/test/test213123.txt")
if err != nil {
fmt.Println(err)
return
}
n, err := f.WriteAt([]byte("Foo"), 0)
if err != nil {
fmt.Println(err)
return
}
off := n
n, err = f.WriteAt([]byte("Bar"), int64(off))
if err != nil {
fmt.Println(err)
return
}
off += n
_, err = f.WriteAt([]byte("FooBar"), int64(off))
if err != nil {
fmt.Println(err)
return
}
defer f.Close()
}
关于go - 将原始 Goreq.body 响应附加到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51259285/