IO
io分为io设备和io接口, 我们日常生活中的打印机, 固态硬盘等都是io设备. IO(Input-Output)是指计算机中输入输出的相关操作,包括数据的读取、存储、传输和显示等。存储是指将数据保存在计算机的存储器中,分为主存储器和辅助存储器两种。硬盘是计算机中的一种辅助存储器,用于长期保存数据。文件系统是一种组织和管理计算机文件的方法,包括文件的存储、访问和保护等。常见的文件系统包括FAT、NTFS和EXT等。
对于我们编程语言的io, 既是将数据进行规范化存储和输出的过程, 就好比我们c语言中的file文件操作, 通常有fwrite, fscan等. 也就是直接对硬盘进行操作(读写,修改, 移位等).
我们对主存或者是外存中的数据进行输出, 就是间接IO的一个过程.
文件系统
存储也就是广义上我们存储的数据文件, 这些数据文件以机器可以读懂的二进制代码的形式存储于主存或者外存中, 当取出数据的时候通过二进制的转化来分析, 辨识数据.
对于大量数据的存储, 我们肯定希望存储的数据方便我们以后查找使用, 所以存储的时候, 就有了存储系统的概念, 存储系统就是在数据存储的时候, 通过特定的数据结构将其联系起来, 例如我们经常看到的文件夹:
这里有很多个目录, 目录底下又有很多目录, 这就是所谓的多叉树结构:
例如我们C盘对应路径下的某个文件 EveryThing.exe程序:
这也就是我们对应的文件系统, 催生出这样的文件系统后, 自然为了方便查找, 也就出现了路径, 路径就是某一个文件在文件系统中位置的描述, 例如我们上述的everything.exe文件.
他的绝对路径为: C:/Program Files/Everything, 当然有绝对就有相对, 我们使用.来表示上级目录, 也就是说, 我们可以将上述绝对路径表示为:./Everything, 使用这个点号'.'来表示他的当前目录Program Files, 同时我们可以使用两个点号来表示当前目录的上级目录.
存储
我们及其是如何读懂我们人类各国的语言的? 显然直接读懂是相当困难的, 于是我们创建出了使用二进制的形式来表示数据, 例如我们常用的ascll码值表, a的ASCLL码值为97, 97用再使用二进制数去表示, 由于我们生活中有需要字符需要去使用二进制表示, 所以就诞生出了码点这个概念.
随着不断的扩展, 于是诞生了utf8这样的大型页码的字符-二进制对应表. 让计算机的地域更加地广阔.
我们打开一个txt文本文件, 可以发现
里面都是我们肉眼可以分辨, 或者读懂的文字或者字符, 这就是文本文件, 但是为什么有的时候打开一个txt文件里面显示的全部都是乱码呢 :
这也就出现了编码问题, 如果a这个字符对应的ascll码值为97, 但是别的人使用了非ascll码值标准, 所以读出来的码值就不是97, 于是就会出现乱码的情况.
我们常用的word和excel都是二进制的形式来存储数据的. 还有我们经常接触到的.java .c还有.class和.exe, .jpg等都是二进制文件
存储这些数据的硬盘
硬盘作为我们日常生活中存储数据的一个介质, 我们生活中的io操作一般都是对硬盘进行操作, 例如将一个二进制文本文件写入硬盘, 假设这个文件对于我们来说很有意义, 那么就有必要将其存储起来, 方便以后要用的时候再取出来.
为了方便我们在编程中进行存储, 各大语言一般都提供了文件操作的标准库, 来让我们可以更加个性化的存储数据. 批量化的处理数据.