IO与计算机存储空间
IO(输入/输出)是计算机领域中指的是数据在计算机与外部设备之间的传输过程。存储通常指的是计算机中用来保存数据的介质或设备,硬盘是存储设备的一种,通常是指硬盘驱动器(Hard Disk Drive,HDD)或固态硬盘(Solid State Drive,SSD)。文件系统是操作系统用来组织和管理存储设备上的文件的一种机制,它定义了文件的存储方式、访问方式以及文件和目录之间的关系等。以下是对IO(输入/输出)、存储、硬盘和文件系统的相关常识的总结:
-
输入/输出(IO):
- 输入/输出是计算机与外部环境之间的数据交换过程。
- 输入指的是从外部设备(如键盘、鼠标、传感器)向计算机传输数据。
- 输出指的是从计算机向外部设备传输数据(如显示器、打印机、扬声器)。
- IO操作是计算机系统中常见且必不可少的部分,用于与用户交互、数据存储和通信等。
-
存储:
- 存储是指计算机用来保存数据和程序的设备或介质。
- 存储可以分为临时存储和永久存储两种类型。
- 临时存储通常是指计算机内存(RAM),用于临时保存正在运行的程序和数据。
- 永久存储通常是指硬盘、固态硬盘(SSD)、光盘、闪存等设备,用于长期保存数据和程序。
-
硬盘:
- 硬盘是计算机存储数据的主要设备之一。
- 硬盘通过旋转的盘片和移动的读写头来存储和读取数据。
- 硬盘分为机械硬盘(HDD)和固态硬盘(SSD)两种类型。
- 机械硬盘使用机械运动和磁性存储来存储数据,而固态硬盘使用闪存芯片来存储数据,速度更快且更可靠。
-
文件系统:
- 文件系统是计算机用来组织和管理存储设备上的文件的一种机制。
- 文件系统负责管理文件的存储方式、访问方式以及文件和目录之间的关系。
- 常见的文件系统包括FAT(File Allocation Table)、NTFS(New Technology File System)、ext4(Linux文件系统)、APFS(Apple File System)等。
- 文件系统还负责文件的命名、权限控制、磁盘空间管理等功能。
将所有IO设备都抽象成文件在计算机科学领域中是一个常见的做法,被称为"一切皆文件"(Everything is a file)的思想,这样我们就能实现接口的统一性了。
文件与文件路径
-
文件:
- 文件是计算机中存储数据的基本单位。
- 文件可以包含文本、图像、视频、音频等各种类型的数据。
- 每个文件都有一个唯一的名称,用于在文件系统中标识和访问该文件。
- 文件通常由文件头部、数据部分和文件尾部组成,文件头部包含文件的元数据信息,如文件类型、大小、创建时间等。
-
文件路径:
- 文件路径是指定文件在文件系统中位置的一串字符。
- 文件路径可以是绝对路径或相对路径。
- 绝对路径从根目录开始,一直指定到目标文件的位置,如
/home/user/Documents/example.txt
。 - 相对路径是相对于当前工作目录的路径,如
Documents/example.txt
,它假定文件位于当前目录下的Documents
子目录中。 - 文件路径可以包括目录名、文件名和文件扩展名,用来唯一标识一个文件。
文件路径的重要性在于它可以帮助操作系统准确定位到文件的位置,从而进行读取、写入、执行等操作。
不同操作系统使用不同的文件分隔符来在文件路径中分隔目录名称。下面是一些常见操作系统的文件分隔符:
-
Windows:
- 文件分隔符:反斜杠(\),正斜杠(/)
- 示例:C:\Users\username\Documents\example.txt
-
Unix-like 系统(如 Linux、macOS 等):
- 文件分隔符:正斜杠(/)
- 示例:/home/username/Documents/example.txt
-
macOS 中的特殊情况:
- macOS 本质上是 Unix-like 系统,但它也支持一种特殊的文件路径格式,使用冒号(:)作为文件分隔符,主要用于访问磁盘卷(volume)上的文件。
- 示例:Macintosh HD:Users:username:Documents:example.txt
许多编程语言和应用程序会使用通用的文件分隔符,如正斜杠(/),以便在不同操作系统上运行时能够正确解析文件路径。在编写跨平台应用程序时,通常建议使用通用的文件分隔符,或者使用操作系统提供的路径处理函数来自动处理文件分隔符的问题,从而确保程序在不同操作系统上的兼容性。
文件的树形结构与目录
文件系统中的文件通常以树形结构组织,其中根目录位于顶层,而子目录和文件则位于树的分支和叶子节点上。这种结构允许用户组织和管理文件以及在文件系统中进行导航。
通过这种树形结构,用户可以方便地组织和管理文件系统中的文件和目录,从根目录出发,沿着目录层次结构浏览和访问文件。这种结构也提供了一种直观的方式来描述文件系统中的文件位置和关系,使得用户能够轻松地定位和操作文件。
二进制文件与文本文件
文件可以分为两种主要类型:二进制文件和文本文件。
-
根目录:文件系统的根目录是整个文件系统的顶层目录,是树形结构的起点。在绝大多数操作系统中,根目录用一个斜杠(/)表示。
-
目录(文件夹):目录是文件系统中的一种特殊文件,用于组织和存储其他文件和目录。目录可以包含文件和其他子目录,形成树形结构中的分支和节点。
-
文件路径:文件路径是描述文件在文件系统中位置的字符串。在树形结构中,文件路径沿着树的分支从根目录到目标文件或目录的位置。绝对路径从根目录开始,逐级指定目录的名称;而相对路径则是相对于当前目录的路径。
-
子目录:子目录是位于父目录下面的目录,也是树形结构中的一个分支。子目录可以包含文件和其他子目录,从而形成更深层次的树形结构。
-
叶子节点:在树形结构中,没有子目录的目录和没有子文件的目录被称为叶子节点。叶子节点是树的末端,不再分支出其他目录或文件。
二进制文件:以二进制形式存储的文件,其中包含了机器可读的数据,通常是由编译器、图像编辑器、音频编辑器等生成的。二进制文件的内容不以可打印字符的形式展现,而是按照特定的格式进行编码。这些文件通常包括可执行文件(如可执行程序)、图像文件(如JPEG、PNG)、音频文件(如MP3、WAV)以及。docx文件(富文本文件)等。
文本文件:以纯文本形式存储的文件,其中包含了人类可读的字符,通常是由文本编辑器、办公软件等生成的。文本文件的内容由字符集编码,常见的编码包括ASCII、UTF-8、UTF-16等。文本文件可以包含普通文本、代码、配置文件等。常见的文本文件包括.txt(纯文本文件)、.html(HTML网页文件)、.css(样式表文件)、.java(Java源代码文件)等。
二进制文件和文本文件在处理方式上有所不同。文本文件可以直接用文本编辑器打开和编辑,而二进制文件通常需要特定的程序或工具进行处理。在计算机系统中,操作系统和应用程序通常能够区分并处理这两种类型的文件。