Go 语言核心 36 讲
郝林
《Go 并发编程实战》作者,前轻松筹大数据负责人
79610 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 55 讲
Go 语言核心 36 讲
15
15
1.0x
00:00/00:00
登录|注册

44 | 使用os包中的API (上)

实现的io包中的接口
代表的内容
Fd
os.OpenFile
os.Open
os.NewFile
os.Create
os.File类型
下期内容预告
操纵文件系统的API丰富
os包的意义和主要用途
os.File类型的指针方法
获取os.File类型的指针值
操纵文件系统的API
平台不相关的API
总结
问题解析
前导内容:os包中的API
使用os包中的API

该思维导图由 AI 生成,仅供参考

我们今天要讲的是os代码包中的 API。这个代码包可以让我们拥有操控计算机操作系统的能力。

前导内容:os 包中的 API

这个代码包提供的都是平台不相关的 API。那么说,什么叫平台不相关的 API 呢?
它的意思是:这些 API 基于(或者说抽象自)操作系统,为我们使用操作系统的功能提供高层次的支持,但是,它们并不依赖于具体的操作系统。
不论是 Linux、macOS、Windows,还是 FreeBSD、OpenBSD、Plan9,os代码包都可以为之提供统一的使用接口。这使得我们可以用同样的方式,来操纵不同的操作系统,并得到相似的结果。
os包中的 API 主要可以帮助我们使用操作系统中的文件系统、权限系统、环境变量、系统进程以及系统信号。
其中,操纵文件系统的 API 最为丰富。我们不但可以利用这些 API 创建和删除文件以及目录,还可以获取到它们的各种信息、修改它们的内容、改变它们的访问权限,等等。
说到这里,就不得不提及一个非常常用的数据类型:os.File
从字面上来看,os.File类型代表了操作系统中的文件。但实际上,它可以代表的远不止于此。或许你已经知道,对于类 Unix 的操作系统(包括 Linux、macOS、FreeBSD 等),其中的一切都可以被看做是文件。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

通过os包中的API,我们可以在不同操作系统上统一操纵文件系统、权限系统、环境变量、系统进程以及系统信号。其中,os.File类型代表操作系统中的文件,实现了多个io包中的接口,使得对文件的读取、写入和定位等操作变得简单。通过os包中的Create、NewFile、Open和OpenFile函数,我们可以创建新文件、打开已存在文件,并进行读写操作。这些函数提供了灵活的文件操作方式,同时也需要注意文件描述符和操作权限的设置。通过os包中的API,我们可以更加方便地操作文件,而且这些操作是跨平台的,适用于不同的操作系统。文章中还介绍了os包的主要用途和存在的意义,以及对操作系统功能的高层次抽象,使得可以通过它以统一的方式操纵不同的操作系统,并得到相似的结果。操纵文件系统的API最为丰富,最有代表性的是数据类型os.File,它不仅可以代表操作系统中的文件,还可以代表其他软件和硬件。这些内容为读者提供了对os包中API的概览,以及其在跨平台文件操作中的重要性。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Go 语言核心 36 讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(8)

  • 最新
  • 精选
  • HF
    老师,高级语言的标准库实现方式有哪些?用到的系统服务是封装系统调用还是用系统库函数

    作者回复: 通常都是两者兼而有之的。Go语言也是这样,但是在它实现自举之后,它已经尽可能地进行直接的系统调用了。 至于其他高级语言怎样做,就要看它们的理念以及是否有能力足够“贴近”操作系统了。 绕过C语言库,直接连接最底层,是需要足够的实力的,包括对操作系统本身足够熟悉等等。

    2020-05-26
    8
  • lesserror
    郝林老师能简单说一下demo87.go 中的 :reflect.TypeOf((*io.ReadWriteSeeker)(nil)).Elem() 运作流程吗? 感觉这种写法还挺特别的。

    作者回复: 1. (*io.ReadWriteSeeker)(nil) 是为了得到一个 *io.ReadWriteSeeker 类型的值,但又不想实例化任何东西,所以右边括号里的是 nil ; 2. 通过反射得到这个 nil 值的类型,一个指针类型(如这里的 *io.ReadWriteSeeker); 3. 调用 Type 类型的 Elem 方法,取出这个指针类型指向的那个类型,即那个接口类型(如这里的 io.ReadWriteSeeker)。 这是一个小技巧,可以获取任意接口的 Type 值。

    2021-08-30
    7
  • lesserror
    郝林老师,demo87.go 样例中好像少了这一段 关闭文件的代码: defer file3.Close()

    作者回复: 这只是一个示例程序,一瞬间就运行结束了,所以没必要添加那么多defer,容易妨碍正题:)

    2021-08-30
    1
  • Walking In The Air
    最希望老师把net包内极相关的包讲解一下,这部分用的最频繁,但是总有一种似懂非懂的感觉,只是知道是这样用,不知道为什么,对底层知识不清晰,没有一个轮廓
    2018-11-22
    30
  • 上山的o牛
    同求net包讲解
    2019-10-12
    2
  • Timo
    打卡
    2019-06-13
  • 海盗船长
    打卡
    2019-04-17
  • 虢國技醬
    打卡
    2019-03-13
收起评论
显示
设置
留言
8
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部