使用缓存读取大文件,详见代码。
package main
import (
"bufio"
"fmt"
"io"
"os"
)
func main() {
file, err1 := os.Open("XXXXX.mp4") // 只读方式打开文件
if err1 != nil { // 文件打开错误
fmt.Println("打开文件错误!")
}
defer file.Close() // 延迟关闭文件
read := bufio.NewReader(file) // 创建读取器
// 创建读取缓存。
// 数值越大,一次读取的数据量越大,占用内存越大,读取次数减少,读取越快。
// 数值越小,一次读取的数据量越小,占用内存越小,读取次数增加,读取越慢。
buf := make([]byte, 1024)
for { // 循环读取数据
n, err2 := read.Read(buf) // 读取数据到缓存,n为读取到的数据长度
if err2 != nil { // 读取错误
if err2 == io.EOF { // 读取完毕
fmt.Println("文件读取完毕!")
} else {
fmt.Println("文件读取错误!")
}
break // 结束读取循环
}
fmt.Println("读取到的数据长度为:", n)
fmt.Println("本次读取的的数据为(字节数组):", buf[:n])
// 因为最后一次读取数据时 n<=设置的缓存 所以使用 buf[:n],确保数据一致性。
}
}