【Go】文件读取file.Read(partBuffer)

使用案例的不完整代码

file, err := os.Open(“xxx.txt”)
const fileChunk = 1 * (1 << 20) // 1 MB
partSize := int(math.Min(fileChunk, float64(fileSize-int64(i*fileChunk)))) //不足fileChunk大小以实际大小为准
partBuffer := make([]byte, partSize) //新建partSize大小的数组
file.Read(partBuffer) //读取大小为partSize的file至partBuffer数组 

左移 (1 << 20) = 1MB
1<< 20 也就是1 * 2^20=1MB。

Go库代码

// Read reads up to len(b) bytes from the File.
// It returns the number of bytes read and any error encountered.
// At end of file, Read returns 0, io.EOF.
func (f *File) Read(b []byte) (n int, err error) {
	if err := f.checkValid("read"); err != nil {
		return 0, err
	}
	n, e := f.read(b)
	return n, f.wrapErr("read", e)
}

参数

  • f 打开的文件句柄。
  • b 读取文件内容存放的指针。

返回值

  • n 读取到的字节数。
  • err 如果读取失败,返回错误信息,否则,返回 nil。

文件读取结束的标志是返回的 n 等于 0,因此,如果我们需要读取整个文件内容,那么我们需要使用 for 循环 不停的读取文件,直到 n 等于 0。

如果没有读取完毕,n 应该记录的是 此时读取到的第几字节。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zoetu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值