文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
总结
IO 大类分为网络 IO 和磁盘 IO,IO 对文件来说就是读写操作,写的时候 数据从内存到磁盘 ,读的时候 数据从磁盘到内存 ;
Go 文件 IO 最常用的是 os 库,使用 Go 封装的标准库,
os.OpenFile
打开,File.Write
,File.Read
进行读写,操作对象都是File
结构体;Go 标准库对 IO 的封装是为了屏蔽复杂的系统调用,提供跨平台的使用姿势。然后单独提供
syscall
库,让程序员自我决策使用要使用更丰富的系统调用功能,当然后果自负;Go 标准库 IO 操作对象是
File
,系统调用 IO 操作对象是 fd(非负整数)。Open
文件默认当前偏移量是 0 (文件最开始),加上O_APPEND
参数之后偏移量会是文件末尾。通过 Seek 调用可以任意指定文件偏移,从而影响文件 IO 的位置;Read
,Write
函数只有 buffer (buffer 有长度),偏移则使用当前文件偏移量;Pread
,Pwrite
的系统调用效果等同于Seek
偏移量然后Read
,Write
,但是又大有不同。对外语义是原子操作,并且不更新当前文件偏移量;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论