Bootstrap

学习文件IO,让你从操作系统内核的角度去理解输入和输出(理论篇)

本篇会加入个人的所谓鱼式疯言

❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言

而是理解过并总结出来通俗易懂的大白话,

小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的.

🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人能接受我们这个概念 !!!

在这里插入图片描述

引言

在数字化时代,数据的存储、访问与处理已成为推动科技进步与社会发展的核心动力。

想象一下,从个人电脑的文档管理到企业级的数据中心,从智能手机上的照片备份到云端服务的海量数据存储,无一不依赖于一个关键而基础的技术—— 文件输入输出(File IO)

文件IO,作为连接数据世界与现实世界的桥梁,其重要性不言而喻。它不仅关乎数据的安全与效率,更是各类应用程序、操作系统乃至整个信息技术架构的基石。

让我们一同踏入这场探索之旅,揭开文件IO技术的神秘面纱,共同见证数据如何在指尖流转,成为推动世界前行的强大力量。

本篇文章中我们讲学习到以下内容

目录

  1. 文件IO的初识

  2. 文件的存储与读写规则

  3. 文件系统知识

一. 文件IO的初识

什么是文件,什么又是IO呢? 那么他们两者又有什么关系呢?

1. 文件的概念

在谈及文件之前,小编带着小伙伴们先回顾下硬盘和内存的关系吧。

硬盘 存储空间大,内存

硬盘 成本低 ,内存

硬盘 读写速度慢 , 内存

硬盘 存储数据持久化 ,内存 掉电后数据丢失

而今天我们谈及的 文件 就是和硬盘相关的一类。

并且文件的概念分为两种

其一: 广义上的文件: 硬件设备,软件资源 都可以称之为 “文件”

其二: 狭义上的文件: 就是我们平常计算机中有着各种文件名+后缀名的文件和文件夹。

在这里插入图片描述

在这里插入图片描述

而我们平常一直说的 IOIO 具体就是 Input 和 output 的这两个单词的缩写,含义就是指 输入 和 输出

所以本篇文章,小编将带着小伙伴们深入了解文件相关的 输入输出理论知识 ❤️ ❤️ ❤️ ❤️

而下篇文章将带着小伙伴了解文件 输入输出具体实际操作的演示 。 💖 💖 💖 💖

二. 文件的存储与读写规则

1.文件的存储

计算机中文件的存储是在 硬盘 上的, 并以文件夹 树状的形式 存储。

存储搞定了, 我们该怎么描述呢?

存储在硬盘,当用户需要 使用某个文件时,就需要进行描述并且读写操作。

于是我们就通过 文件目录这个方式来描述具体的某个文件

鱼式疯言

总结两点

  1. 文件夹可以多个 包含文件 ,也可以包含多个文件夹文件夹和文件夹之间是呈现树状结构, 注意这里的树状结构 不是 二叉树 ,而是 N叉树
  1. 单个文件 才是真正含有 文件内容和信息 的资源。

2. 文件的描述

<1>. 文件的路径

路径分为两种:

绝对路径:由一个一个 文件名连接 ,并且由 /(斜杠) 或者 \ (反斜杠) 来分割 (在window的操作系统上 斜杆 和 反斜杠 都可以)。

在其他的操作系统(Linux等… )上,一般只支持 / (斜杆) 来进行分割。

在这里插	入描述
在这里插入图片描述

这里的 C:\c Source\c语言\c语言\Debug 就是 绝对路径

相对路径:先确定 基准路径

比如基准路径为: C:\c Source\c语言

那么文件的相对路径就可以写为: .\c语言\Debug 就是相对路径

而这里小编需要说明的是 .\ 代表是 上一个路径

..\ 代表的是 上上一个路径 。 这样以此类推。

<2>. 文件的目录

了解了文件的路径,我们自然也就知道文件的目录的表示方式就很简单了

就是: 目录 = 路径 + 文件名 + 文件后缀

在这里插入图片描述
当我们需要描述一个文件时,就是 上面的路径 + 文件名 + 文件后缀 就是我们指定的一个特殊的文件。

鱼式疯言

  1. 对于一个文件来说,我们都可以利用 绝对路径+ 文件名 + 文件后缀
    或者 相对路径 + 文件名 + 文件后缀 的方式进行描述表示。
  1. 目录本质上也可以称为 文件

3. 文件的读写规则

<1>. 文件读写的初识

文件的读: 输入到文件中

文件的写: 从文件进行输出

故有 读入写出 之说。

但是输入和输出都是相对的某个设备来说的

比如相对于硬盘来说,从文件出来的数据为 输出
到达文件的数据为 输入

但是我们真正的定义为:

数据离 CPU越远, 我们称为: 输出

数据离 CPU越近, 我们称之为: 输入

鱼式疯言

文件的读操作和写操作的权限是不同的

举个栗子

假如小编有个好看的学习笔记。

  • 对于小编的普通朋友来说:他们只可以 观看笔记(读操作),而不能修改笔记(写操作)

  • 而对于小编的最要好的朋友来说: 他们既可以 观看笔记(进行读操作) , 也可以 修改笔记(写操作)

  • 如果是陌生人的话,他们既不能 观看笔记(读操作) ,也不能 修改笔记(写操作)

所以对于 不同的身份 ,读和写的权限都是 有可能不同的

三. 文件系统知识

其实以上内容也都属于文件系统的知识,所以下面的两个知识点算是对 上面知识点的文件系统知识的补充。

1.文件读写的本质

我们知道文件的数据是存储到硬盘上的,但硬盘在读写有一个不足就是: 读写速度相对于内存来说很慢

那么为什么我们硬盘读写速度相对于内存来说读写速度那么慢呢?
在这里插入图片描述

其实啊 ! ! !

文件的读写主要靠上面的 硬盘盘片转动来实现的 , 一般以7200转 / min 的速度转动,只要盘片转到哪就读取到哪这样的原理。

试想一下,如果是顺序读写的话,硬盘的读写会根据盘片的转动来是很快的。

但如果是随机读写呢 ? ? ?

盘片就需要克服自身的惯性, 来进行读写,这样的读写 速度就和内存比就相差很慢很慢啦。

所以这就是为什么硬盘的读写速度远不如内存的读写速度啦。

鱼式疯言

小知识

在这里插入图片描述

在这里插入图片描述

2. 文件的类型

文件的类型在大体上我们一般分为两种文件类型

  1. 文本文件
  2. 二进制文件

<1>. 文本文件

文本文件主要是含有人类可以读的懂的 字符和数字和符号等… 组成的。

在这里插入图片描述

例如:.txt 文件, .java文件 , .c 文件等…

<2>. 二进制文件

只含有0 和 1 的二进制数字组成的文件,称为 二进制文件

在这里插入图片描述

二进制文件记事本读取 时,就会出现一堆乱码的情况。

例如: .class, .exe, .obj等…

鱼式疯言

  1. 能用 记事本打开并能识别 的是 文本文件
    能用 记事本打开不能识别 的是 二进制文件
  1. 文本文件 本质上也是 二进制数字,但计算机根据 utf8Ascall 码表 等… 进行 转码成相对应 的字符,从而能被我们人类所能识别。

总结

  • 文件IO的初识:认识了 文件IO 的概念,硬盘和内容的不同。

  • 文件的存储与读写规则:文件的本质是存储到硬盘上, 并且也熟悉了读写的理解,以及对于文件路径和文件目录的理解 。 目录 = 路径 +
    文件名 + 文件后缀。

  • 文件系统知识:熟悉了在硬件本身上,文件的读写操作是通过硬盘上的盘片的移动来读写,并且认识到了文件的两个大类: 文本文件 和
    二进制文件。

如果觉得小编写的还不错的咱可支持 三连 下 (定有回访哦) , 不妥当的咱请评论区 指正

希望我的文章能给各位宝子们带来哪怕一点点的收获就是 小编创作 的最大 动力 💖 💖 💖

在这里插入图片描述

;