Seek() 用法

Seek() 用法

func (f *File) Seek(offset int64, whence int) (ret int64, err error)
file, _ := os.Open("./main.go")
buf := make([]byte, 100)
// whence   0:文件的原点(初始位置)    1:当前偏移量(ret的位置)    2:文件结束位置
fmt.Println(file.Seek(0, 2))   // 985 <nil>  ==> 当前位置重置为文件结束位置,ret代表 file.Read 时的起始位置(相对于整个文件开始,偏移了多少字节),当前偏移量。从这里可以知道 ./main.go 文件大小为 985 字节
fmt.Println(file.Read(buf))    // 0 <nil>    ==> 所以这里读取是空的。因为此时当前位置是文件结尾处
fmt.Println(file.Seek(-10, 1)) // 978 <nil>  ==> 从当前位置往前偏移10个字节
fmt.Println(file.Read(buf))    // 10 <nil>   ==> 所以从当前位置开始读只有10个字节
fmt.Println(file.Seek(0, 0))   // 0 <nil>    ==> 当前位置重置为文件起始位置
fmt.Println(file.Read(buf))    // 100 <nil>  ==> 从开始位置读,可以读满整个 buf
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值