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

本文介绍了一种通过缓存来高效读取大文件的方法。使用Go语言中的bufio包创建读取器,并设置缓存大小,以平衡内存占用与读取速度。通过循环读取直至文件末尾,实现对大文件的有效处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

gocryptfs 是一个使用 Go 开发的,加密的覆盖文件系统。gocryptfs 基于 go-fuse FUSE 库和其 LoopbackFileSystem API 构建。gocryptfs 灵感来源于 EncFS,修复了其安全问题,提供更好的性能。gocryptfs 当前只支持 Linux 系统,以后会继续支持 OS X。安装:$ go get github.com/rfjakob/gocryptfs使用:$ mkdir cipher plain $ $GOPATH/bin/gocryptfs --init cipher   [...] $ $GOPATH/bin/gocryptfs cipher plain   [...] $ echo test > plain/test.txt $ ls -l cipher   total 8   -rw-rw-r--. 1 user  user   33  7. Okt 23:23 0ao8Hyyf1A-A88sfNvkUxA==   -rw-rw-r--. 1 user  user  233  7. Okt 23:23 gocryptfs.conf $ fusermount -u plain性能:./benchmark.bash gocryptfs v0.3.1-30-gd69e0df-dirty; on-disk format 2 PASS BenchmarkStreamWrite-2       100      12246070 ns/op      85.63 MB/s BenchmarkStreamRead-2        200       9125990 ns/op     114.90 MB/s BenchmarkCreate0B-2        10000        101284 ns/op BenchmarkCreate1B-2        10000        178356 ns/op       0.01 MB/s BenchmarkCreate100B-2       5000        361014 ns/op       0.28 MB/s BenchmarkCreate4kB-2        5000        375035 ns/op      10.92 MB/s BenchmarkCreate10kB-2       3000        491071 ns/op      20.85 MB/s ok      github.com/rfjakob/gocryptfs/integration_tests  17.216s 标签:文件加密
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值