目录
一、IO
1、定义
在计算机中,输入/输出(即IO)是指信息处理系统(比如计算机)和外部世界(可以是人或其他信息处理系统)的通信。
输入是指系统接收的信号或数据,输出是指从系统发出的数据或信号。这个术语可以用作某个动作的一部分:“执行I/O”就是指执行输入输出动作。
IO操作涉及到用户空间和内核空间的转换:
- 内存空间分为用户空间和内核空间,也称为用户缓冲区和内核缓冲区
- 用户的应用程序不能直接操作内核空间而是需要将数据从内核空间拷贝到用户空间才能使用
- 无论是读操作还是写操作,都只能在内核空间中执行
- 磁盘IO和网络IO请求加载到内存的数据都是先放在内核空间的
二、存储
1、内存
内存是计算机中用于暂时储存程序和数据的地方。内存的读写速度非常快,可以达到每秒GB的速度,但它的容量相对较小。内存中存储的数据在计算机关闭后会丢失,因此,它仅适用于临时存储数据。
2、硬盘
硬盘是一种用于长期存储数据的设备。与内存不同,硬盘的容量较大,可以存储TB级别的数据,而且可以在计算机关闭和重新启动后保留数据。但是,硬盘的读写速度较慢,通常在每秒数百MB的范围内。
硬盘分为机械硬盘(HDD)和固态硬盘(SSD)。固态硬盘是一种新型的存储设备,在速度上比传统的机械硬盘快得多。固态硬盘没有机械部件,因此速度更快、噪音更小,并且可以在温度较高的环境下运行。但固态硬盘相对较贵,容量也不如机械硬盘那么大。
硬盘和内存对比:
- 内存速度快,硬盘速度慢
- 内存空间小,硬盘空间大
- 内存贵,硬盘便宜
- 内存的数据断电后就丢失,硬盘的数据断电后还在
三、硬盘的工作原理
1、磁头
磁头是硬盘中最重要的部件之一,它负责读取和写入磁盘上的数据。磁头以非常高的速度飞过磁盘表面,将信息写入磁介质或从中读取信息。
2、盘片
盘片是硬盘中存储数据的主要部件。一个硬盘通常有多个盘片,每个盘片都可以分成许多轨道和扇区。轨道是由同心圆组成的,而扇区是由一条弧线和两条半径直线组成的一个小块。
3、硬盘的读写操作
当需要读取硬盘上的数据时,计算机会发送一个读取请求到硬盘,然后磁头飞过磁盘表面找到正确的轨道和扇区,并读取相应的数据。当需要写入数据时,磁盘会接收一个写入请求,并将数据存储到正确的磁盘扇区中。
四、文件系统
1、认识文件
针对硬盘这种持久化存储的I/O设备,当我们想要进行数据保存时,往往不是保存成一个整体,而是独立成一个个的单位进行保存,这个独立的单位就被抽象成文件的概念,就类似办公桌上的一份份真实的文件一般。
2、树形结构和目录
一台计算机上,有很多的文件,这些文件是通过“文件系统”来进行组织的。其中,“文件系统”是操作系统提供的模块。操作系统使用层级结构进行组织文件,也就是数据结构中的树形结构。
这样,一种专门用来存放管理信息的特殊文件诞生了,也就是我们平时所谓的文件夹(通俗叫法)或者目录(专业术语)的概念。
3、文件路径
文件路径是使用 目录的 层次结构,来描述文件所在的位置。D:\学习\f1\text.txt ,形如这样的一个字符串,体现出了当前文件夹在哪个目录。
路径又分为绝对路径和相对路径。
绝对路径:以C: D: 盘符开头。这种路径称为“绝对路径”。
相对路径:需要先指定一个目录,作为基准目录。从基准目录出发,看看沿着啥样的路线能够找到指定文件。此时涉及到的路径就是“相对路径”。相对路径往往是以 .(当前目录)或者 ..(当前目录的上一级目录)开头的。
例:绝对路径:D:\学习\f1\text.txt
相对路径:1)假定当前目录的基准目录是 D:\学习\f1 ,那相对路径就是 .\text.txt 。
2)假定当前目录的基准目录是 D:\学习 ,那相对路径就是 .\f1\text.txt 。
3)假定当前目录的基准目录是 D:\学习\f1\111,那相对路径就是 ..\text.txt 。
如果是在命令行进行操作,基准目录就是你当前所处的目录。像在 IDEA 中,基准目录就是项目目录!!
4、文件类型
从编程角度看,文件类型主要就是两大类:文本文件和二进制文件。
文本文件:文件中保存的数据,都是字符串,保存的内容都是 合法的字符。
二进制文件:文件中保存的数据,仅仅是二进制数据,不要求保存的内容是 合法的字符。
如果文件是 utf8 编码的,此时文件中的每个数据都是合法的 utf8 编码的字符,就可以认为这个文件是文本文件了。如果存在一些不是 utf8 合法字符的情况,就是二进制文件。
如何判定一个文件是文本还是二进制?(快速)
直接使用记事本,打开这个文件。(记事本就是尝试按照字符发方式来展示内容的)
如果打开之后,乱码,此文件就是二进制。否则,就是文本。