如何获取大文件的字节片?

时间:2019-10-24 13:05:41

标签: go io

我有一个大文件存储在path,并且想有效地从索引text到索引x切出一个字节片y。到目前为止,这是我的代码:

content, err := ioutil.ReadFile(path)
check(err)
text = content[x:y]
// do something with text

当前实现的问题是我遇到了大文件的内存问题。

fatal error: runtime: out of memory

如何避免这种情况?

1 个答案:

答案 0 :(得分:0)

yazgazan的帮助下,我可以使用File.ReadAt提出解决方案:

f, err := os.Open(path)
check(err)
text := make([]byte, y-x)
_, err = f.ReadAt(text, int64(x))