golang使用SQLite数据库对指定扩展名文件进行批量加密(四、大文件读取)

使用缓存读取大文件,详见代码。

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],确保数据一致性。
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值