一、文件是什么?——数据的集装箱

1.1从物理到逻辑的抽象

        当我们谈论计算机中的文件时,实际上是在讨论一种逻辑抽象。物理层面,我们的数据存储在硬盘、固态硬盘等持久化设备上,这些设备以扇形、块为单位存储二进制数据。如果直接面向这些物理地址,用户和程序都将寸步难行。

        于是操作系统引入文件这个概念,将分散的存储块组织成一个独立的单位,就像办公桌上的一份份纸质文件。每个文件拥有自己的内容和标签,用户可以按名称访问,而无序关心它具体在磁盘的哪个磁道上。

1.2文件的两部分:数据内容+元信息

        文件不仅仅包含我们肉眼可见的内容,它还包括一组元信息,也成为文件属性.这些信息不属于文件本体,但对系统管理文件至关重要。

元信息类比 举例
标识类 文件名、文件类型(后缀)
尺寸类 文件大小(字节数)
时间类 创建时间、最后修改时间、最后访问时间
权限类 读/写/执行权限
位置类 文件在磁盘上的物理地址
链接类 硬链接计数,软链接目标路径

在Windows上,右键查看属性有这些信息

二、文件如何组织?——树形结构与目录

2.1为什么要目录?

        当文件数量少时,平铺摆放尚可接受。但一个现代操作系统动辄数十万文件,如果没有管理手段,将是灾难。人们自然想到分层分类,就像图书馆里的书架——先按大类,再按小类,最终定位到具体书本。

        计算机科学家借鉴了数据结构中的树概念,用目录/文件夹作为树的中间节点,普通文件作为叶子节点。每个目录可以包含子目录i和文件,形成一颗倒挂的树,根在顶层。

2.2目录里存的是什么?

        目录并不是容器实物,它实际上是一个特殊的文件,里面存储的是其下子项(子目录和文件)的元信息列表,包括文件名、文件类型、文件在磁盘上的索引节点号等。当你打开一个文件夹时,系统读取该目录文件的内容,并展示给用户。

2.3树形结构的优势

        1.层次清晰,符合人类思维习惯

        2.唯一路径:从根出发可以唯一确定每个文件的位置

        3.便于权限控制:可以为不同目录设置不同访问权限,并向下继承。

三、如何定位文件?——绝对路径与相对路径

        文件系统是一颗大树,那么要找到树上的一个特定节点,最自然的方法就是描述从根到到该节点的完整路径,这就是绝对路径。

3.1绝对路径

        以根目录为起点,逐级写出所有经过的目录名,最后加上文件名。不同操作系统的写法略有不同:

        1.Windows例如:C:\Users\Administrator\Documents\report.txt

        2.Linux/macOS例如:/home/zhangsan/project/README.md

绝对路径是全局唯一的,无论当前位于哪个目录,都能准确找到文件。

3.2相对路径

        相当于当前工作目录的路径。它简化了路径描述,但依赖于当前上下文

         .  表示当前目录

        . .  表示父目录

在编程中,绝对路径往往更可靠,但相对路径能提高代码的可移植性。

四、文件分类

4.1按内容:文本文件/二进制文件

类型 特征 常见格式
文本文件

数据由字符集编码,可以用

文本编辑器直接阅读修改

.txt、.cuv、.html

.java

二进制文件

数据按照特定格式存储,不直接

对应字符,需要专用程序解释

.exe、.jpg、.pdf

.class

本质区别:文本文件存储的是字符编码值,而二进制文件存储的是“原始数据”。例如,整数12345在文本文件中会占用5个字节,在二进制文件中可能只占用4个字节(int类型)。

4.2按操作系统约定:拓展名

        拓展名是文件名中最后一个点后面的部分,如.docx、.png。在Windows系统中,拓展名强关联到文件类型和默认打开程序,如果修改拓展名,系统可能无法正确打开。

        但在Linux/macOS上,拓展名仅对用户和程序有提示意义,操作系统本身不会依赖它。

更多推荐