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

news2024/12/23 0:06:58

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

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

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

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

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

在这里插入图片描述

引言

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

想象一下,从个人电脑的文档管理到企业级的数据中心,从智能手机上的照片备份到云端服务的海量数据存储,无一不依赖于一个关键而基础的技术—— 文件输入输出(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 的概念,硬盘和内容的不同。

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

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

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

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2056268.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

day06——前后端交互

一、计算属性 计算属性就是基于现有的数据推算出来的新属性&#xff0c;只要依赖的数据变化&#xff0c;新属性就会自动更新&#xff0c;而且计算属性多次调用的情况下只会计算一次&#xff0c;效率非常高 简化写法 const app new Vue({ el: #app, data: {}, methods: {//跟da…

易境通海运系统:打造海运专线稳定合作的强力引擎

对于海运专线而言&#xff0c;稳定的合作伙伴至关重要。在激烈的市场竞争中&#xff0c;如何持续保持客户的高满意度&#xff0c;不断强化自身优势&#xff0c;并提升用户粘性&#xff0c;是众多海运专线必须面对并解决的问题。而拥有一套可靠的系统&#xff0c;提供完备的服务…

会“坐”电梯,能避障碍,AGV无人搬运车进入各行各业

AGV 近年来&#xff0c;自动导引车&#xff08;Automated Guided Vehicle&#xff0c;简称AGV&#xff09;作为一种先进的物流设备&#xff0c;在制造业中广泛应用。AGV是一种能够自主行驶的无人驾驶车辆&#xff0c;通过内置的导航系统和传感器&#xff0c;实现对环境的感知与…

Loop Map 循环的几种方法

参考 Using entrySet() public void iterateUsingEntrySet(Map<String, Integer> map) {for (Map.Entry<String, Integer> entry : map.entrySet()) {System.out.println(entry.getKey() ":" entry.getValue());} } Iterator<Map.Entry<String…

Apache CloudStack Official Document 翻译节选(七)

关于 Apache CloudStack 的 最佳实践 &#xff08;一&#xff09; Best Practices 部署Apache CloudStack是极具挑战性的&#xff0c;在整个部署过程中需要你做出形形色色的技术性选择。Apache CloudStack的配置条目是相当灵活的&#xff0c;这是因为在组合和配置具体条目时有…

手机谷歌浏览器怎么用

谷歌浏览器不仅在PC端受欢迎&#xff0c;在移动端也是广泛应用的。为了帮助大家更好的理解和使用手机谷歌浏览器&#xff0c;本文将详细介绍如何使用手机谷歌浏览器&#xff0c;对这款浏览器感到陌生的话就快快学起来吧。&#xff08;本文由https://chrome.cmrrs.com/站点的作者…

动手学深度学习7.6 残差网络(ResNet)-笔记练习(PyTorch)

本节课程地址&#xff1a;29 残差网络 ResNet【动手学深度学习v2】_哔哩哔哩_bilibili 29.2 ResNet为什么能训练出1000层的模型【动手学深度学习v2】_哔哩哔哩_bilibili 本节教材地址&#xff1a;7.6. 残差网络&#xff08;ResNet&#xff09; — 动手学深度学习 2.0.0 docume…

制造企业MES系统质检管理的应用

MES系统在质检管理中的作用 MES系统通过集成生产过程中的各个环节&#xff0c;实现对产品质量的全面监控和管理。其在质检管理中的作用主要体现在以下几个方面&#xff1a; 1. 实时数据采集&#xff1a;MES系统能够实时收集生产线上的质量数据&#xff0c;包括但不限于产品尺…

知识改变命运 数据结构【栈和队列面试题】

1.最小栈 class MinStack {Stack <Integer>stack;Stack <Integer>minStack; public MinStack() {stacknew Stack<>();minStacknew Stack<>();}public void push(int val) {stack.push(val);if(minStack.empty()) {minStack.push(val);} else {int top…

汇昌联信科技做拼多多电商怎么提升浏览量?

随着电子商务的蓬勃发展&#xff0c;各大平台之间的竞争变得日益激烈。在这样的背景下&#xff0c;汇昌联信科技如何通过有效的策略来提升其在拼多多平台上的店铺浏览量&#xff0c;成为了一个值得深入探讨的问题。提升浏览量不仅能够增加商品的曝光率&#xff0c;还能有效提高…

【设计模式】六大原则-下

❓首先什么是设计模式&#xff1f; &#x1f635;相信刚上大学的你和我一样&#xff0c;在学习这门课的时候根本不了解这些设计原则和模式有什么用处&#xff0c;反而不如隔壁的C更有意思&#xff0c;至少还能弹出一个小黑框&#xff0c;给我个hello world。 ✨ 如何你和我一样…

【python报错】‘XXX‘ object is not callable

‘XXX‘ object is not callable----这个报错通常是因为在代码中某一个变量的名字和函数的名字重复导致的&#xff0c;此时需要确定名称使用是否正确&#xff0c;如果重复则需要修改其中一个名字&#xff1b;如果名字没有问题&#xff0c;那就要看表达式写的对不对&#xff0c;…

使用 Lombok 遇到一个问题

起因是换了一个电脑&#xff0c;重新从服务器上拉了一个项目。项目是由maven构建的&#xff0c;在控制台中使用mvn命令编译项目时&#xff0c;没有任何问题&#xff0c;编译成功。如下图&#xff1a; 可是idea里面的源码&#xff0c;却标红了&#xff0c;如下&#xff1a; 错误…

猫咪掉毛很烦恼,希喂、小米哪个牌子的宠物空气净化器更好用?

随着养宠物人群变多&#xff0c;现在打着宠物专用旗号的空气净化器也越来越多&#xff0c;但是很多空气净化器对宠物的效果&#xff0c;真的是只有宣传上和宠物有关&#xff0c;实际设计和效果上和宠物毫无关系。需要大家擦亮眼睛&#xff0c;多做功课&#xff0c;才能不被那些…

如何在前端测试中,在F12中加入token

不止是token&#xff0c;cookie中其他的数据也都可以这样 首先打开F12&#xff0c;然后找到Application或者应用程序 然后找到cookie里面双击这里&#xff0c;输入token或者其他数据就可以了&#xff0c;后面输值。

网络安全术语全解析:筑牢数字防线的必备知识

在当今数字化时代&#xff0c;网络安全成为了至关重要的议题。了解网络安全术语是构建安全网络环境的基础&#xff0c;本文将为你详细介绍一系列常见的网络安全术语。 一、攻击相关术语 1. 恶意软件&#xff08;Malware&#xff09; 恶意软件是指在计算机系统上执行恶意任务…

操作系统简介:存储管理

存储管理 1. 基本概念2. 存储管理方案2.1 分区存储管理2.2 分页存储管理2.3 分段存储管理2.4 虚拟存储管理页面置换算法 存储器管理的对象是主存储器(主存、内存)。存储管理的主要功能包括 分配和回收主存空间、提高主存的利用率、扩充主存、对主存信息实现有效保护。 1. 基本…

【机器学习】探索机器学习在旅游业的革新之旅

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀目录 &#x1f50d;1. 引言&#x1f4d2;2. 机器学习在旅游需求分析中的应用&#x1f31e;用户行为数据分析&#x1f319;旅客偏好预测模型⭐…

【Spring】为什么不建议使用@Autowired

【Spring】为什么不建议使用Autowired 开篇词&#xff1a;干货篇&#xff1a;1.知识回顾2.Autowired和其他注入方式的对比1.Autowired 注入&#xff08;字段注入&#xff09;2.构造器注入3.Setter 方法注入 3.为什么spring官方不推荐使用1. 违反封装原则2. 依赖关系不明确3. 难…

yolo V8训练 长条状目标

1、说明 目标数据集合中有很多长条状图片&#xff0c;如果直接Resize 会严重拉伸&#xff0c;因此采用把长条图像裁剪成2段&#xff0c;然后将裁剪后的2段图片拼接在一起。 2、代码 2.1 C 代码 &#xff08;部署&#xff0c;模型推理时C &#xff09; #include <stdio.h…