当前位置: 首页 > news >正文

基础IO -- 理解文件(1)

目录

一:回顾文件

二:加深对文件的理解

1.概念

2.以w写方式打开

3.以a追加方式打开

4.重定向


一:回顾文件

以前学习过在C语言中的文件操作, 但那根本是不足以理解文件的,即站在语言角度是不可能理解文件的

我们要进行文件操作时,前提是我们的程序跑起来了

文件打开和关闭,是CPU在执行我们的代码

二:加深对文件的理解

1.概念

打开文件,本质上就是进程打开文件!!!

即struct task_struct 和struct XXX(文件结构)之间一定存在着两种对象之间的指针关系

文件没有被打开的时候,那它存在哪里呢?? --->  在磁盘上存在

一个进程是可以打开多个文件的,而系统内部也可以存在很多进程  --->  因此在很多情况下,操作系统内部一定存在大量的被打开的文件

所有在OS需要将这些被打开的文件进程管理起来 ---> 先描述,再组织

(因此可以大概猜到每一个被打开的文件,在OS内部,一定要存在对应的描述文件属性的结构类似PCB!)

像PCB一般,把一个文件打开就创建一个结构,然后将其用链表串起来,最后对打开文件的管理就变成了对链表的增删查改

如果我们在磁盘上新建一个大小为0的文件,什么都不写,此时这个文件会不会占据磁盘空间呢???  --->   会的,因为其存在的各种属性也是数据,也会占据一定的空间

即文件 = 属性 + 内容

2.以w写方式打开

打开方式为 w

1.如果不存在,就在当前路径下,新建指定的文件

2.若存在,默认打开文件的时候,就会先把目标文件清空

3.以a追加方式打开

即 appending  追加,不会清空文件,而是在后面追加内容

4.重定向

echo ... > xxx文件  即 重定向操作

输出重定向一定是文件操作

每次写入文件内容都是新的,与以w方式打开文件方式一样(先清空,后写入)

通过这个特性,可以将 echo > 符号做出两个新的用途

1.创建新文件:

2.清空文件:

echo ... >> xxx 追加重定向  即与以 a方式 打开文件一致

http://www.lryc.cn/news/460636.html

相关文章:

  • golang包管理
  • outlook 添加企业邮箱账号出现 553 authentication is required 错误解决
  • 一个开源可本地部署的英文翻译服务----EnToZhAPI
  • 【unity】编辑器扩展——在OnValidate中创建、删除游戏物体
  • 学习记录:js算法(六十四):最后一块石头的重量
  • 单片机探秘:从理论到应用
  • options妙用
  • UE5 圆周运动、贝塞尔曲线运动、贝塞尔曲线点
  • 线程局部存储(TLS)
  • JavaSE——集合7:Set接口实现类—TreeSet
  • 【idea技巧篇】idea的类注释和方法注释模版自定义设置
  • 【Kubernetes① 基础】一、容器基础
  • 计算机网络第1章(概述)万字笔记详细版
  • 每日一练算法题(堆串的基本操作StrReplace(S, T, V))
  • IRP默认最小流程
  • 【全网最全】AI产品经理面试高频100题答案解析
  • VLLM实现大模型服务的部署
  • Java 基数排序
  • 红帽发送邮件操作
  • 学习记录:js算法(六十一):添加与搜索单词 - 数据结构设计
  • Jetpack-ObservableField实现双向绑定
  • STARnak, LTR 模型笔记
  • 【数据结构】:破译排序算法--数字世界的秩序密码(二)
  • 2024年《生成式ai大模型》都学什么内容呢?
  • kubernetes自定义pod启动用户
  • C4T避风型电动采光排烟天窗(图集09J621-2)
  • 多态常见面试问题
  • 案例-登录认证(上)
  • 对BSV区块链下一代节点Teranode的答疑解惑(上篇)
  • vue父子组件传参的方法