☰
12种常见文件类型全拆解:从扩展名到魔数,轻松识别文件真实身份
2026/9/27 1:05:55 网站建设 项目流程

前阵子帮朋友收拾旧电脑,遇到一个特别典型的问题:他下载了一堆学习资料,双击全是乱码,有个安装包双击直接报错,还有一块移动硬盘插上去系统一直提示"需要格式化"。折腾到最后才发现,好多文件只是改了扩展名,或者压根就是放错了类型。这件事让我意识到,文件类型这种最基础的概念,反而是很多人日常和工作中踩坑最多的地方。

这篇文章我把最常见的12种文件类型按用途拆开讲清楚,每类用什么样的软件打开、底层是什么结构、有哪些容易翻车的点,都会说到。同时把最近好几个热搜里的真实问题一并拆完——SQL安装时明明下载的是MSI文件却弹出解压提示是怎么回事,移动硬盘变成了RAW格式导致chkdsk没法用该怎么办,openEuler系统里默认支持哪些文件类型。文章不烧脑,但保证你看完能少踩一半坑。

1. 先得搞清楚一件事:文件类型决定"谁来打开它"

1.1 文件类型到底是什么

可以这么理解:文件本质就是磁盘上的一堆字节,而"类型"就是这堆字节的一种约定写法。比如图片文件会用一张图片编码规范来写字节,文本文件会用字符编码来写字节,压缩包会用压缩算法重新整理字节。软件之所以能正确打开文件,是因为它认出了这个约定,然后按约定去解读。

举个很直观的例子:把一张JPG图片用记事本打开,会看到满屏乱码;但把同样一个文件放到图片查看器里,就能正常显示。文件本身没有变,变的只是解读方式。文件类型,就是这个"解读方式"的标识。

明白了这一点,很多问题就有了答案:为什么有些文件换了扩展名就打不开了?因为内容没变,软件按新扩展名的约定去解读老字节,自然就出错了。为什么同样的文件在不同设备上表现不一样?因为不同操作系统对类型标识的依赖程度不一样。

1.2 不同系统是靠什么认类型的

Windows 的习惯是看扩展名,也就是文件名最后那个点后面的字母。它会根据扩展名去关联对应的打开程序,比如 .docx 默认给 Word,.mp4 默认给播放器。这很方便,但也最容易被误导——改个扩展名就能让 Windows 认错。

Linux 和 macOS 相对聪明一点,它们不完全依赖扩展名,系统会在文件内容开头找一段固定的"签名"来识别的真实身份,然后再交给对应的程序。这也是为什么很多 Linux 工具能识别出"这个文件虽然叫.jpg,但实际是文本"。

移动端和网站用的是 MIME 类型,比如image/jpeg、application/pdf。浏览器上传文件、邮箱发附件的时候,判断依据其实就是 MIME 类型,而不是扩展名。

1.3 这12种类型是怎么划分的

我按"用途"来分,会比按"格式特征"来分更贴近日常使用场景。整篇会重点讲这12类:纯文本、版式文档、表格数据、压缩归档、位图图像、矢量图形、音频、视频、可执行程序与安装包、数据库文件、磁盘镜像与虚拟磁盘、代码与配置文件。

大类文件类型典型扩展名典型用途
办公数据纯文本txt, md记录、写作、代码
办公数据版式文档pdf跨平台排版发布
办公数据表格数据csv, xlsx数据交换、统计分析
传输存储压缩归档zip, rar, 7z打包传输、备份
多媒体位图图像jpg, png, gif, bmp照片、截图、网页素材
多媒体矢量图形svg, ai图标、Logo、印刷
多媒体音频mp3, wav, flac音乐、录音、配音
多媒体视频mp4, mkv, avi影片、课程录像
程序系统可执行/安装包exe, msi, apk运行程序、安装软件
程序系统数据库sqlite, mdb数据持久化存储
程序系统磁盘镜像iso, vmdk, raw光盘备份、虚拟机
程序系统代码配置json, yaml, xml程序逻辑、环境配置

这里面每一类都值得单独写一篇,但更关键的是先建立整体框架,知道它们各自处在什么位置、彼此之间有什么关系。

2. 12种常见文件类型逐个拆解:从文本文档到虚拟磁盘

2.1 办公与数据类:纯文本、版式文档、表格数据、压缩归档

纯文本文件是所有文件类型里最朴素也是最长寿的一种。TXT、Markdown、各种日志文件都属于这一类,它们存储的就是字符本身,加上一些换行符。纯文本没有任何格式化信息,所以任何一台设备、任何一个编辑器都能打开。它的坑主要在编码上:同一个TXT用GBK编码保存,拿到用UTF-8解码的地方可能就会显示乱码。现在的主流建议是,凡是需要长期保存的文本,最好都用UTF-8编码保存。

版式文档的代表就是PDF,它的核心价值是"所见即所得"。你在设计软件里排好的版面,发给别人以后无论对方用什么设备打开,样子都不会变。这和DOCX这类流式文档有本质区别——流式文档的内容会根据页面宽度重新流动排版,同样一份Word文档在不同设备上可能看着不太一样。所以需要给客户、给领导发正式文件时,转成PDF是公认最稳妥的做法。

表格数据里最常见的是CSV和XLSX。CSV本质就是纯文本加逗号分隔,一个标准的CSV文件直接用记事本也能看,用Excel打开会自动按逗号拆成列。它的好处是极其通用,几乎任何数据分析工具、数据库都支持。XLSX则复杂得多,它本身是一种压缩包结构,里面藏着多个XML文件来记录格式、公式和样式,所以XLSX可以承载非常复杂的表格能力,但代价是用文本编辑器直接打开只能看到一堆乱码。

压缩归档类型的代表是ZIP、RAR和7Z。压缩包里面其实装着很多文件的结构信息和原始数据,经过压缩算法重新编码后体积变小。ZIP的识别特征很直观,文件开头的两个字母是PK。判断一个压缩包是否损坏,不要只看能不能打开,还要看测试功能——WinRAR和7-Zip都有"测试"选项,能逐个检验包内文件的完整性。压缩包的常见坑是伪加密、分卷丢失和文件名编码混乱,解压出来一堆乱码文件名甚至解压失败。

2.2 多媒体类:位图图像、矢量图形、音频、视频

位图图像大家几乎每天都在接触,JPG、PNG、GIF、BMP都是位图,它们记录的是一个个像素点的颜色值。JPG用有损压缩把照片的体积压小,适合存生活照;PNG支持透明通道并且是无损压缩,适合做截图和网页素材;GIF只支持256色,却因为能播放简单动画而在表情包界长盛不衰。位图有个天然缺陷就是放大必糊,因为它记录的像素数量是固定的,放大了就要靠软件插值猜中间的颜色。

矢量图形和位图完全不同,它记录的不是像素而是数学描述——直线的起点终点、曲线的控制点、填充的颜色。SVG、AI、CDR都属于矢量格式,好处是无限放大都不会模糊,Logo、图标、工程图纸都适合用矢量来做。代价是编辑门槛比较高,需要专门的软件,比如专业设计软件或者开源免费的Inkscape。

音频文件主要分两大阵营:有损和无损。MP3、AAC属于有损,它们会丢掉一些人耳不太敏感的细节来换体积,一首歌大概3到5MB。WAV和FLAC属于无损,WAV完全没有压缩但体积巨大,FLAC做了无损压缩所以体积小很多。日常听歌MP3够用,但如果你要剪辑、做后期,强烈建议保留一份WAV或FLAC的原始素材,因为反复转码每次都会再一次损失音质。

视频文件的本质要拆开两层看:编码和封装。编码是指画面和声音怎么压缩,比如H.264、HEVC;封装是指把压缩后的视频流、音频流和字幕装进一个容器里,比如MP4、MKV、AVI。所以扩展名是MP4只说明容器是MP4,里面的视频到底用的是什么编码,还要单独看。这也是为什么有些下载好的视频明明是MP4,放播放器里却没声音没画面——很可能封装格式和编码格式不匹配。遇到这种文件,用格式工厂或者FFmpeg重封装一下通常就能解决。

2.3 程序与系统类:可执行/安装包、数据库、磁盘镜像、代码配置

可执行程序与安装包的核心特点是文件里包含机器可以执行的指令。Windows下最常见的是EXE和MSI,Android下是APK。这里面有个关键区别:EXE是一个直白的可执行程序,双击就运行;MSI则是Windows安装器专门定义的一种数据库文件,里面记录了安装哪些文件、写哪些注册表项、创建哪些服务。MSI不能靠双击去"运行",它必须由系统的安装引擎来解读和执行。这个区别后面聊SQL安装问题时会具体展开。

数据库文件是很多应用的数据心脏。SQLite是单文件数据库的典型代表,整个数据库就存放在一个.db或.sqlite文件里,APP随便拷走就能用。大型数据库的库文件通常需要配合数据库服务实例才能打开,直接拷走别人也不一定读得动。日常办公里接触数据库文件的机会不多,但你只要写过带数据存储的脚本或小工具,大概率会和SQLite打交道——它就是那个让"数据持久化"变得无比简单的东西。

磁盘镜像与虚拟磁盘是一类容易被忽视但越来越重要的文件类型。ISO是光盘镜像,相当于把整张光盘的内容和结构原封不动装进一个文件里,Windows和macOS都支持直接双击挂载成虚拟光驱。VMDK、VHDX、QCOW2是虚拟机的磁盘文件,虚拟机里的操作系统看到它们就是一块硬盘。RAW在这里又有完全不同的含义,它指裸磁盘镜像——把物理硬盘一个扇区一个扇区完整复制出来,没有任何文件系统的封装,后面会详细讲。

代码与配置文件的扩展名琳琅满目,JSON、YAML、XML、INI、TOML,但底层全都是纯文本。它们和TXT的唯一区别是约定了一套结构化写法,让程序能方便地解析里面的数据。JSON是最通用的数据交换格式,YAML因为写起来像配置文件而流行,XML在老旧系统和办公文档里仍然大量存在。这类文件最大的坑是编码和缩进问题——一个中文字符编码不对,整个程序可能就崩了;YAML缩进错了,解析器会直接报错。

每类文件的特性都在"识别方式"和"使用场景"上。到了真正遇到问题时,真正关键的不是背下每个扩展名属于哪一类,而是能根据实际情况判断出"这个文件底子里是什么、应该用什么工具处理"。

3. 扩展名只是外衣:用"魔数"验明文件的真实身份

3.1 为什么扩展名会骗人

Windows默认隐藏已知文件的扩展名,这一条就坑了无数人。你看到文件名是"毕业设计.pdf",以为双击就能打开,实际上它的完整名字可能是"毕业设计.pdf.exe",一个伪装成PDF的可执行程序。又或者有人把一个文本文件改成.png,图片查看器打开就报错,因为他只是改了名字,内容还是文本。

扩展名本质上是给人和操作系统看的"标签",不是文件内容的保证。改扩展名不会改变文件真实结构,只会在双击时把文件交给错误的程序去打开。所以判断一个文件到底是什么,最可靠的办法是直接看文件内容开头的几个字节。

3.2 用文件头几个字节识破伪装

文件内容开头的位置,专业上叫文件签名,也有个形象的叫法叫"魔数"。每种格式都有自己的魔数,是格式规范里写死的。像PNG开头的8个字节固定是\x89PNG\r\n\x1a\n,PDF开头是%PDF,ZIP和DOCX、XLSX都是PK,MSI和老的DOC则都是D0 CF 11 E0 A1 B1 1A E1。Windows下用HxD或者010 Editor这类十六进制编辑器,Linux下用xxd或hexdump,都能直接看到文件头。

拿一个实际例子来说,有一次朋友发来一个"资料.rar",双击提示文件损坏,我用十六进制编辑器打开一看,开头根本不是52 61 72 21(RAR的魔数),而是50 4B 03 04(ZIP的魔数)。原来这个文件只是被改了扩展名,实际上是个ZIP压缩包。把名字改回.zip,立即就能正常打开。

Linux系统里更省事,直接一条命令搞定:

file 资料.rar

file命令会自动读取文件头、检查内容结构,然后告诉你这个文件的真实类型,不依赖扩展名。这是排查文件类型问题最顺手的一个命令,我几乎天天用。Linux下还能用xxd直接看十六进制:

xxd -l 16 资料.rar

看前面16个字节,基本就能确定文件的真实身份。

3.3 MIME类型也值得了解一下

网站上传文件、邮件系统处理附件、手机App打开文件的时候,靠的不是扩展名,而是MIME类型。MIME是个标准化的类型描述,比如application/pdf代表PDF、image/png代表PNG、text/csv代表CSV。后端在接收上传文件时如果只校验扩展名,就很容易被人绕过去——把恶意脚本改成.jpg照样能上传成功。正确做法是解析文件内容,用得到的真实类型做白名单校验,而不是信文件名。

日常使用不需要了解太多MIME细节,但明白"扩展名不等于文件类型"这点,能帮你躲开大部分跟文件相关的坑。

4. 热搜里的三个真实问题:MSI解压、RAW与chkdsk、openEuler的文件系统

三个热搜词问题全都指向同一点——文件类型识别不清楚。我一个个拆开说,顺带给出可以照着做的处理方法。

4.1 SQL安装时跳出解压提示,但文件类型是MSI

很多人从官网下载SQL Server的安装包后,发现下载的文件是MSI,双击却弹出一个"正在解压"的进度窗口,第一反应就是"是不是下载错了?MSI不是应该直接安装吗?"

先说结论:这个解压提示是正常行为,不用慌。

MSI文件本身是Windows安装器的数据库文件,它的底层结构是一种"复合文档",类似一个小型数据库,里面按照一张张数据表记录了要安装的文件列表、注册表操作、服务配置、安装顺序等元信息,同时那些真正的安装文件通常被压缩打包存放着。Windows的安装引擎msiexec在拿到MSI后,会先读取数据库,把打包在内部的安装文件释放到临时目录,再按照指令把它们复制到目标位置。这个过程体现在界面上,就是那个"正在解压"的进度条。

所以如果你下载的确实是SQL Server的MSI包,运行起来弹出解压界面,说明安装引擎正在干活,属于正常流程。真正需要注意的反而是另外两种情况:

  1. 如果双击MSI没有弹出安装界面,而是弹出了WinRAR、7-Zip或者其它压缩软件,说明你的系统把MSI文件关联到了压缩软件上,导致不是安装引擎在调用它,而是压缩软件在试图"打开"它。这种情况下可以先打开WinRAR,在设置里取消对MSI的关联,或者右键点击文件,选择"打开方式",强制用"Windows Installer"打开。

  2. 如果你拿到的其实是一个EXE引导程序,比如SQL Server官网下载页面给的安装包通常是SQLServer2022-SSEI-Expr-x64.exe,它本身是一个引导器,运行后会先把真正的安装文件解压到临时目录,再启动安装中心。这种"先解压再安装"的流程也很常见,文件类型是EXE,但行为看起来像解压。

如果实在需要解开MSI包里的内容,可以使用管理安装模式:

msiexec /a 包名.msi /qb TARGETDIR=C:\解压目录

这个命令会把MSI内的文件按数据表记录的结构完整释放到你指定的目录,适合需要查看MSI里到底装了什么东西、或者需要提取某个单独文件的场景。注意要用管理员权限运行命令提示符。

顺带说一句,判断一个文件到底是不是真正的MSI,用前面讲的魔数方法最稳妥:真正的MSI开头是D0 CF 11 E0 A1 B1 1A E1,和旧的DOC文档、WPS文档是同一类复合文档结构。如果文件头不对,说明它只是被改了扩展名的其它类型文件。

4.2 文件类型是RAW,chkdsk无法供RAW驱动器使用

这个热搜里的问题关键词是"RAW",但得先说清楚:RAW有两种完全不同的含义,很多人混在一起导致操作失误。

第一种是摄影里的RAW格式。相机直接输出传感器原始数据的文件,常见的CR2、NEF、ARW都属于这种,它保留了最完整的画面信息,但必须用专门的后期软件才能打开和调色。这种RAW没有任何异常,属于正常的图像格式。

第二种是磁盘分区的RAW状态。这种情况下的"RAW"不是一个正常的文件格式,而是Windows对"无法识别文件系统"的一种统称。正常情况下,磁盘分区上会有NTFS、FAT32、exFAT这类文件系统的元数据,告诉系统"这块区域是文件记录区、那边是目录区"。如果这些元数据损坏、丢失,或者分区表出了问题,Windows就认不出这个分区用了什么文件系统,只能把它标记为RAW。

这时磁盘管理里能看到分区,但文件系统一栏写的是RAW,资源管理器里双击会提示"驱动器中的磁盘未被格式化,是否现在格式化"——注意,千万不要手一抖点了"格式化磁盘"。

出错信息里的"CHKDSK无法供RAW驱动器使用",解释起来其实很简单:chkdsk的工作原理是读取文件系统的元数据,逐个检查文件记录、目录结构、索引是不是一致。而RAW状态的磁盘上根本没有可识别的文件系统元数据,chkdsk找不到可以下手的对象,自然没法工作。

遇到这种问题,正确的处理思路是:

  1. 立刻停止对该磁盘的一切写入操作,包括格式化、新建文件、拷贝文件进去。文件数据还在扇区里,只要不覆盖就有救。
  2. 优先用磁盘分区恢复工具,比如DiskGenius、TestDisk,它们会直接扫描扇区,尝试重建分区表或者识别底层残留的文件系统结构。TestDisk是开源免费的,对这类问题尤其顺手。
  3. 如果工具能识别出数据,先做整盘镜像备份,再对镜像做恢复操作,不要直接在原盘上反复折腾。
  4. 数据恢复成功以后再考虑重新格式化,把磁盘恢复正常使用。

这里特别提醒:网络上一堆教程让你先随便找个软件扫描恢复,但恢复类操作最忌讳的是拿不靠谱的工具反复扫。扫的过程中虽然主要是读操作,但某些工具会尝试写入修复,反而把现场破坏了。比较稳妥的做法是先用只读模式扫描确认能识别出文件,再谈恢复。

4.3 openEuler系统支持的文件类型有哪些

这个热搜里的问题应该说是一个"简答题",题目本身可能出得不严谨,因为这里说的"文件类型"很大概率指的是"文件系统"——这是两个不同的概念。

文件类型描述的是文件内容本身的格式,就是前面一大半文章在讲的PDF、MP4、ZIP这些东西。文件系统描述的是磁盘如何组织和存储文件,比如ext4、XFS、NTFS。一个运行中的系统能处理哪些文件类型,取决于安装了哪些应用程序;而一块磁盘或分区能用什么方式格式化,取决于操作系统和内核支持哪些文件系统。

openEuler作为基于Linux内核的发行版,对文件系统的支持相当全面。默认安装时最常见的是ext4和XFS:

文件系统特点典型用途
ext4成熟稳定、兼容性好,Linux下最经典的通用文件系统系统根分区、普通数据盘
XFS高吞吐、适合大文件,ext4之外用得非常多的方案大规模文件存储、数据库数据盘
Btrfs支持快照、压缩、校验和,功能丰富但复杂度也高需要快照和灵活管理的高级场景
swap交换分区专用格式,不是用来存文件的内存交换
vfat / exFAT兼容Windows和移动设备的格式U盘、移动硬盘跨平台交换
ISO9660光盘文件系统挂载光盘镜像

想查看当前系统里各分区实际用的是哪种文件系统,命令很简单:

df -T

df -T会列出所有已挂载分区以及它们的文件系统类型。如果想看块设备和分区的格式化信息,可以用:

lsblk -f blkid

三个命令配合起来,系统里存储布局一目了然。

openEuler默认启动时会自动挂载系统分区,但新加的硬盘不会自动识别,需要手动分区格式化。一般流程是先查看磁盘编号,然后分区、格式化、挂载改fstab。日常使用中最常遇到的跨平台场景是U盘:如果U盘之前是Windows下格式化的NTFS,openEuler可能默认不识别,需要安装ntfs-3g;如果是exFAT的U盘,现在的内核版本一般也能直接挂载。

不过话说回来,如果题目问的是"支持哪些文件类型",那答案就换成了另一种思路:openEuler本身对文件内容层面的类型没有限制,装了解码器就能看MP4,装了办公套件就能打开DOCX,装了图像软件就能处理RAW照片。有疑问的通常是"这个格式有没有对应的软件"而不是"系统限制了这个格式"。

5. 与其死记类型列表,不如掌握识别方法,顺便分享几条实操心得

12种类型看过一遍容易,但实际工作里总会遇到没见过的新格式。我自己的习惯是,碰到一个不认识的扩展名,先走三步:用file命令看一眼文件头,确认系统对它的识别结果;查一下这个类型对应的标准MIME和常见打开软件;如果是关键文件,先用十六进制编辑器检查完整性的关键字节。三步走完,90%的迷茫都能消除。

有几个实操层面的心得,想单独拎出来说说:

第一,永远显示文件扩展名。Windows资源管理器里"查看"菜单的"显示文件扩展名"一定要打开,这是防伪装、防误操作的第一道保险。多年经验下来,我觉得大部分人遇到文件相关的问题,根源都能追溯到扩展名被隐藏这一点上。

第二,压缩包先测试再解压。不管是从网上下载的ZIP/RAR,还是同事发来的压缩包,先跑一遍压缩软件的"测试"功能,确认包内文件完整再说。压缩包是个容易出错的地方,早发现早重下,省得解压到一半才发现文件损坏。

第三,重要资料用通用格式存档。我自己写过很多文档、算过很多表格,但凡是打算长期保存的资料,最终都会转存成PDF、CSV或TXT。这几个格式都是公开规范,不存在"某个软件倒闭了就打不开"的问题。前阵子翻出十年前的一份老课件,PPT源文件早已打不开,但同目录下导出的PDF依然能正常阅读,还清晰得很。

第四,看到"RAW"先分清语境。是相机拍的RAW照片,还是磁盘分区变成了RAW——前者要找图像软件,后者要立刻停止写入然后做数据恢复。同一个词,两种完全不同的处理路径,也是最容易误操作的一个点。

关于文件类型能聊的东西其实还有很多,比如深度学习里不同数据集的格式处理、跨平台工具链里的换行符差异、文本编码检测这些,每一条都能单独展开写。但先把最基础的识别思路和12种类型框架搭起来,以后再遇到更冷门的格式,心里就有了底,知道该从哪里下手去查、去验证,而不是靠猜。这也是我写这一篇的初衷。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询