01文件到底是什么?

我们每天都会接触文件: 一张照片、一个 Word 文档、一首音乐、一个程序, 都可以以文件的形式保存在电脑里。

更准确地说, 文件是由文件系统管理的一组相关数据。 操作系统会给它一个名字,并记录它对应的数据存放在哪里。

照片文件

保存图像数据

文档文件

保存文字和排版等数据

音频文件

保存编码后的声音数据

02文件名和文件内容是一回事吗?

不是。 文件名只是方便人和程序找到它的一个名字, 文件内容才是实际保存的数据。

文件名 holiday.jpg

帮助我们识别这个文件

文件内容 FF D8 FF E0 ...

真正存储的字节数据

你可以把文件改名, 但改名字并不会自动改变里面的数据。

03文件到底“住”在哪里?

文件通常保存在 SSD、硬盘、U 盘、存储卡等设备上。 但“一个文件”并不一定真的占据一整块连续空间。

文件系统会把存储设备划分成很多可管理的区域, 再记录某个文件的数据占用了哪些区域。

一个文件

我们看到的是一个完整对象

A B C D

底层存储区域

文件的数据可能分布在不同位置

04文件系统是做什么的?

如果存储设备只是很多 Byte, 电脑还需要一种规则来管理: 哪些数据属于哪个文件、文件叫什么、放在哪个目录、占多大空间。

这套管理规则就是文件系统(File System)

记录名称

文件叫什么

记录位置

文件属于哪个目录

记录存储区域

数据实际占用了哪些空间

记录属性

时间、权限等信息

常见文件系统有 NTFS、APFS、ext4、exFAT 等。 不同系统的内部实现不同,但都在解决“怎样组织和管理文件”这个问题。

05文件大小表示什么?

文件大小通常表示: 这个文件的内容有多少 Byte。

2 KB

很小的文本文件

大约几千 Byte

4 MB

一张压缩照片

大约几百万 Byte

2 GB

较大的视频文件

大约几十亿 Byte

但需要注意: 文件大小它在磁盘上实际占用的空间可能不完全一样。

文件大小 内容实际有多少 Byte
磁盘占用 受文件系统分配单位等影响

06文件为什么会有不同格式?

因为不同类型的信息,需要不同的组织和编码方法。

JPEG / PNG

用来组织图片数据

MP3 / FLAC

用来组织音频数据

MP4

常用于封装视频、音频等数据

TXT / JSON

保存文本或结构化文本数据

程序打开文件时, 需要按照对应格式的规则去解释里面的 Byte。

07打开和保存文件时发生了什么?

当你双击一个文件时, 操作系统会先找到这个文件,再交给合适的程序读取。

1

找到文件

文件系统根据路径定位文件

2

读取数据

把需要的数据读入内存

3

程序解释

按照格式解析文件内容

保存时则大致反过来: 程序把当前内容编码成文件格式,再请求操作系统把数据写回存储设备。

程序中的内容 编码成文件格式 写入存储设备

08文件和文件夹有什么区别?

文件主要用来保存内容数据; 文件夹(目录)主要用来组织文件和其他目录

文件

保存具体数据

例如照片、文档、程序

文件夹 / 目录

组织和管理名称与层级

里面可以放文件和子目录

你已经知道了什么

  • 文件是由文件系统管理的一组相关数据,而不只是桌面上的一个图标。
  • 文件名和文件内容不是同一件事,改名通常不会改变里面的数据。
  • 文件的数据可能分布在存储设备的不同区域,不一定连续存放。
  • 文件系统负责管理文件名、目录、存储位置、大小、时间和权限等信息。
  • 文件大小通常表示内容有多少 Byte,但和磁盘实际占用空间可能不同。
  • 文件格式规定了数据怎样组织,软件必须按正确格式去解释。
  • 打开文件时,系统会读取数据到内存,程序再按照格式解析;保存时再把修改写回存储设备。
  • 文件主要保存内容,文件夹 / 目录主要负责组织文件和层级关系。

下一个问题: 既然文件名和文件内容不是一回事, 那文件名最后的 .jpg、.txt、.cpp 这些“后缀”到底有什么用? 下一篇:为什么文件有不同的后缀?