基本知识
文件
计算机文件属于文件的一种,与普通文件载体不同,计算机文件是以计算机硬盘为载体存储在计算机上的信息集合。文件可以是文本文档、图片、程序等等。
文件扩展名
文件扩展名(Filename Extension,或作延伸文件名、后缀名)是操作系统用来标志文件格式的一种机制。
例如:一个名为 example.txt
的文件,example 是文件主名,txt 为文件扩展名,表示这个文件是一个纯文字文件。通常以点号 .
作为文件主名与文件扩展名的分隔符号。
文件扩展名的作用是用于指示文件类型,更重要的是让系统决定当用户想打开这个文件的时候用哪种软件运行。
常见文件扩展名
扩展名 | 类型 | 扩展名 | 类型 |
---|---|---|---|
txt | 纯文本文件 | html | 超文本标记语言文件 |
zip | ZIP 压缩文件 | rar | WinRAR 压缩归档 |
png | 便携式网络图形 | jpg | JPEG 图像 |
mp3 | MP3 音频文件 | wma | Windows Media 音频文件 |
mp4 | MPEG-4 视频文件 | avi | 音频视频交错文件 |
docx | 微软 Word 文档 | xlsx | 微软 Excel 电子表格 |
进阶知识
操作系统辩识文件
显而易见,文件扩展名是为了让人知道这是什么类型的文件。但操作系统也通过扩展名来辨识文件吗?
首先不是所有的文件都有扩展名,比如系统 hosts
文件,负责本地解析域名和 IP 的对应关系,它实际上是一个文本文件。
其次一个 png 图像文件同样也可以通过文本文件形式打开,只不过看到的,都是一堆看不懂的字符,即乱码。
对于操作系统来说,扩展名的作用都是用来关联默认应用程序的。默认打开方式,即首要打开方式,Windows 操作系统双击一个文件打开,就是以默认打开方式打开。比如双击一个 txt 纯文本文件,会调用记事本程序打开,双击一个 png 图像文件,会调用 Windows 自带的图像查看程序打开。我们可以右击选择打开方式调用其他程序打开,也可以在系统设置中设置文件扩展名和默认应用的关联关系,即更改指定文件默认打开方式。如果文件扩展名没有关联关系,你会发现这类文件将无法双击打开,只能自己选择正确的应用程序来打开。
我们都知道,操作系统上的文件都是以二进制存储的,本质上是没有任何区别的。操作系统辨别文件其实通常是通过读取文件的头信息。
通过十六进制查看器查看一个 png 文件,框选部分就是文件头信息中的一部分。
当系统调用应用程序打开文件时,操作系统会检查该文件的权限以及安全属性。符合权限和安全设置时,应用程序就会启动去检查文件的头信息。如果文件头信息中的标志不属于该应用程序可以打开的类型,该应用程序会通知用户无法打开该文件。如果文件头信息的标志是可以打开的类型,应用程序会按照头信息里规定格式去解读该文件。这个时候,如果文件的真实内容和文件头信息规定的格式不相符,应用程序同样无法打开文件,甚至可能告诉你文件已经损坏。
常见文件文件头
扩展名 | 文件头 | 扩展名 | 文件头 |
---|---|---|---|
png | 89504E | jpg | 89504E |
zip | 504B03 | rar | 526172 |
mp3 | 494433 | wma | 3026B2 |
最后
至于某种文件具体的结构解析,可以百度看专业的讲解。例如:
- 详解PNG文件结构
- MP3文件结构解析(超详细)
- 欢迎补充