ioutil.ReadAll 仅使用数据而不复制字节数组的替代方案
ioutil.ReadAll alternative that only consumes data, without duplicating the byte array
从 mux.HandleFunc
调用,我有一个类型为 multipart.File
的 http.Request.FormFile
。我正在对浏览器的文件上传速度进行基准测试,所以我不需要验证数据。我当前的代码是:
fileBytes, err := ioutil.ReadAll(file)
if err != nil {
fmt.Println(err)
}
return len(fileBytes)
ioutil.ReadAll
进行了不必要的复制。有没有其他方法可以验证我是否拥有所有数据而无需创建副本?
可选,我可以用什么替换 len(fileBytes)
?如果这应该在一个单独的问题中,你可以忽略它。
我尝试了什么
.ReadAll
调用 readAll
calling bytes.Buffer.ReadFrom
调用 io.Reader.Read
,我找不到。
使用 io.Copy()
to copy the content of the file into ioutil.Discard
不存储但丢弃数据。 io.Copy()
复制直到到达 EOF(或发生错误),并且 returns 复制的字节数:
n, err := io.Copy(ioutil.Discard, file)
从 mux.HandleFunc
调用,我有一个类型为 multipart.File
的 http.Request.FormFile
。我正在对浏览器的文件上传速度进行基准测试,所以我不需要验证数据。我当前的代码是:
fileBytes, err := ioutil.ReadAll(file)
if err != nil {
fmt.Println(err)
}
return len(fileBytes)
ioutil.ReadAll
进行了不必要的复制。有没有其他方法可以验证我是否拥有所有数据而无需创建副本?
可选,我可以用什么替换 len(fileBytes)
?如果这应该在一个单独的问题中,你可以忽略它。
我尝试了什么
.ReadAll
调用 readAll
calling bytes.Buffer.ReadFrom
调用 io.Reader.Read
,我找不到。
使用 io.Copy()
to copy the content of the file into ioutil.Discard
不存储但丢弃数据。 io.Copy()
复制直到到达 EOF(或发生错误),并且 returns 复制的字节数:
n, err := io.Copy(ioutil.Discard, file)