ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

文件类型识别指南:从文件头到扩展名,读懂12种常见格式

2026/9/27 2:56:12 拓冰建站 浏览量
文件类型识别指南:从文件头到扩展名,读懂12种常见格式 你有没有过这种时刻从网上下载一个文件后缀名奇奇怪怪或者干脆没有后缀双击之前心里就开始犯嘀咕——这到底是什么文件会不会是个病毒该用哪个软件打开我这些年帮人处理电脑和服务器问题几乎每一次都是从同一个问题开始“你先告诉我这个文件的真实类型是什么”结果大多数人支支吾吾最后只能念出扩展名。其实扩展名只是文件最外层的一张贴纸真正决定文件身份的是它内部的二进制结构。这篇文章会把最常见的12种文件类型从头到尾捋一遍同时专门聊几个特别容易让人翻车的真实场景为什么安装SQL时会突然跳出解压提示但拿到的文件明明是msi为什么硬盘分区变成raw之后chkdsk直接罢工在openEuler这类Linux系统上到底支持哪些文件类型。无论你是办公用户、开发工程师还是一线运维看完应该都能少踩几个坑。1. 文件类型是怎么被识别的扩展名只是表层1.1 扩展名会被改文件头才是“身份证”你把一个记事本文件从 .txt 改成 .exe图标确实会变成可执行程序的样式但如果内容是纯文本双击它大概率还是打不开或者弹出一堆莫名其妙的错误。反过来把真正的 .exe 改成 .txt它本质上依然是可执行程序。这个例子说明一个关键点扩展名只是操作系统用来关联“打开方式”的快捷标签改标签并不会改变包裹里的实物。真正决定类型的是文件开头那几颗字节业内叫“魔数”或者“文件头”。PNG 图片开头固定是 89 50 4E 47PDF 开头是 %PDFZIP 压缩包开头是 PKWindows 的 exe 开头是 4D 5A也就是 MZ。这些字节是格式规范写死的设计者故意留这个签名就是为了让工具能在不看扩展名的情况下认出它。你可以把扩展名想象成快递盒上的手写备注文件头才是盒子里商品包装上印着的生产批号备注贴错了商品不会变。1.2 系统其实在看两个地方扩展名和内容Windows 的资源管理器主要靠扩展名去翻注册表找到“这个后缀应该由谁打开”所以你会看到不同文件显示不同图标和“类型”列。但很多底层工具根本不看扩展名Linux 的 file 命令、7-Zip、磁盘取证软件都会直接读文件内容对照内置的魔数库给出结论。所以“文件类型”这个词有时候指系统关联有时候指格式本体我们下面讨论的12种常见文件类型指的都是格式本体。这也就解释了为什么改后缀之后文件“看起来”变了但实际没变。判断一个文件的真实类型最可靠的办法永远是读文件头而不是看文件名。很多人以为“类型”列里写的“JPEG 图像”就是真理其实那一行也可能来自扩展名文件头才是最后的裁判。1.3 光看文件头够不够基本够用但有个细节需要注意有些格式是“容器”里面装了另一个东西。比如 docx、xlsx、apk 实际都是 ZIP 容器文件头显示 PK再往容器内部看docx 里有[Content_Types].xmlapk 里有AndroidManifest.xml。所以读文件头能定位到大类想判断更精确的用途需要打开容器看内部清单。这个习惯在排查问题时特别有用后面第3章里提到的几个热搜问题都会用到这个思路。2. 12种常见文件类型全览按用途分类的实用清单2.1 一张表看全12类我按日常使用频率和用途把文件分成下面这12大类。这张表的依据不是高深的格式规范而是“你拿到这个文件准备拿来干嘛”序号类型常见扩展名典型特征/文件头常见场景1文本与文档txt / md / docx / pdfPDF头为%PDFdocx是ZIP容器办公、阅读、知识管理2表格与数据csv / xlsx / parquetcsv纯文本xlsx是ZIPparquet有PAR1数据交换、报表分析3图像jpg / png / gifFF D8、89 50 4E 47、GIF8图片浏览、网页素材4音频mp3 / wav / flacID3、RIFF....WAVE、fLaC听歌、配音、音轨处理5视频mp4 / mkv / movftyp、1A 45 DF A3、moov视频剪辑、播放6压缩包与归档zip / rar / 7z / tar.gzPK、Rar!、7z、1F 8B文件传输、备份归档7可执行与安装包exe / msi / apk / binMZ、D0 CF 11 E0、ZIP容器软件安装、运行程序8数据库sqlite / db / mdf“SQLite format 3”、版本头业务库、轻量存储9系统与配置ini / conf / reg / pst纯文本或注册表/邮件结构系统设置、软件配置10日志log / jsonl / evtx文本日志或EVTX二进制事件排障、审计、监控11虚拟镜像与磁盘vmdk / vhd / qcow2 / raw各厂商魔数raw无统一头虚拟机、磁盘备份12字体与资源ttf / otf / woff2 / dll字体引擎签名DLL也是PE排版渲染、界面设计2.2 为什么按用途分而不是按格式分我刻意按“用途”而不是“格式族”来分。因为普通人和运维拿到文件第一反应是“我要拿它干什么”而不是“它是基于什么算法组织的”。知道大类之后再往深处走才有方向视频和音频都可能是流媒体容器但打开它们的软件完全不同数据库文件和文本文件同样都存数据但绝不能用文本编辑器随便改。以用途划分排查问题的效率会高很多。另外这12类里有几个“撞车”名称容易把人绕晕最典型的就是 raw。图像类里raw 指相机的原始感光数据磁盘镜像里raw 指未封装文件系统的裸镜像Windows 资源管理器里磁盘分区“变成RAW”又代表文件系统无法识别。这三个 raw 其实不是同一个概念但名字一模一样所以看到“raw”时一定要先确认语境。2.3 几个特别容易误判的例子扩展名为 .bin 或 .dat 的文件光看名字基本猜不出内容它们可能是镜像、数据库、固件、缓存甚至是个视频必须用工具识别。.docx 和 .xlsx 在 file 工具下会被报告为“Zip archive”如果你不知道它们内部是XML很容易以为自己下载错了。无后缀文件也常出现在 Linux 工具链、固件包和自解压包里这时候记住一条不要双击先读文件头。3. 从三个热门问题看文件类型识别翻车现场3.1 SQL安装跳出解压提示但文件其实是MSI先说一个非常常见的场景。有人从官网或镜像站下载 SQL Server 相关的安装引导程序运行后屏幕上弹出“正在解压文件”的进度条但下载到的文件明明后缀是 .msi。第一反应往往是“是不是文件坏了或者被包装成了别的格式”于是有人直接把 .msi 改成 .zip 试图解压结果越搞越乱。MSI 真正的身份是什么它是 Windows Installer 的安装包底层使用复合文档结构文件头是 D0 CF 11 E0 开头的 OLE 家族。它内部不是一堆散文件而是一张张结构化的表记录组件、文件、注册表项和安装流程。所以它跟 zip 压缩包完全不是一回事格式哲学都不一样。那“解压提示”从哪来的最常见的原因是你双击的根本不是那个 msi而是同目录或下载到的另一个引导程序 exe。SQL Server 的离线安装介质经常是“引导器 内部MSI CAB数据包”的组合用户在官网点下载时拿到的其实是一个 exe双击后它先把自己携带的压缩资源释放到临时目录显示“解压中”随后才调用内部真正的 msi。如果你下到的文件确实以 .msi 结尾又弹出解压提示则可能是某些下载站做了二次封装变成了自解压包也可能是浏览器或下载工具把文件写坏了后缀。但无论是哪种第一条原则都是先确认真实类型再决定下一步。怎么确认三个办法。第一右键属性看“类型”说明但这条只作为参考第二用 7-Zip 打开这个文件如果打开后看到的是“Windows Installer”结构或一堆系统表说明是标准 MSI如果看到的是真实文件清单说明是自解压包第三直接读文件头标准 MSI 是 D0 CF 11 E0zip 容器则是 PK。后两条更可信。确认是标准 MSI 后不用理会“解压提示”直接双击或执行msiexec /i安装即可如果想提取其中的文件而不是安装用msiexec /a加上目标目录参数这才是正确途径。3.2 文件系统变成RAWchkdsk为何罢工第二个高频问题来自磁盘管理某块分区或移动硬盘在电脑上显示为 RAW想用 chkdsk 修复结果系统直接提示“无法供 RAW 驱动器使用”很多人当场懵掉。先澄清一个概念分区变成 RAW不是变成了图片文件而是 Windows 读取分区时找不到可识别的文件系统——它既不是 NTFS也不是 FAT32/exFAT于是用一个占位符 RAW 表示“我不知道这是什么”。这其实是存储层的“文件类型丢失”状态。chkdsk 之所以拒绝工作是因为这个工具必须知道分区用的是哪种文件系统它才能遍历文件表、连锁检查目录项。面对一个连类型都读不出来的 RAW 分区chkdsk 就像让一个不认识仪表盘的司机去修发动机它连该从哪里下刀都不知道所以直接报错。RAW 的成因通常是异常断电、分区表或引导扇区损坏、坏道、第三方分区工具误操作甚至病毒感染。遇到 RAW千万别格式化也别听网上一些“先跑一遍 chkdsk /f”的说法。正确顺序应该是第一步停掉一切写入操作不要在这个盘上新建文件第二步先做整盘或分区镜像把数据抢救的底版留下来第三步用 TestDisk 这类工具尝试重建分区表和引导扇区第四步如果重建失败或者文件急需找回用磁盘级恢复软件扫描镜像把文件记录按扇区拼回来。整个过程里镜像备份是核心。很多人在 RAW 状态下强行 chkdsk结果旧文件没回来新写入的数据还把现场覆盖了悔都来不及。我自己的习惯是见 RAW、先镜像、再修复顺序一次都不能乱。3.3 openEuler系统上支持哪些文件类型第三个热搜问题问的是 openEuler 系统支持的文件类型但它其实包含两层意思。第一层是文件系统类型也就是格式化分区时选用的格式第二层才是我们前面聊的具体文件格式。在文件系统层面openEuler 使用的是 Linux 内核的 VFS 框架常见可用的有 ext4、xfs、btrfs、vfat对应 FAT32、exfat、ntfs通过 ntfs-3g还有 iso9660 光盘格式以及运行时内存盘 tmpfs。安装系统时默认通常给 ext4 或 xfs 二选一具体范围还要看你用的内核版本和官方文档不同发行版本的支持清单会有差异。如果要快速确认当前分区用的是什么文件系统可以执行df -T看 Type 列或者用lsblk -f看每个分区的 FSTYPE。在文件类型层面Linux 那句著名的“一切皆文件”才是精髓。用ls -l查看长列表时第一列第一个字符就在告诉你这个东西的类型-表示普通文件d是目录l是符号链接b是块设备c是字符设备s是套接字p是管道。也就是说Linux 把磁盘分区、终端、管道都抽象成文件来管理这与 Windows 按扩展名区分类型完全是两套哲学。实际操作中查看某个文件的具体格式仍然用 file 命令它会直接告诉你“这是 JPEG 图片”还是“这是 shell 脚本文本”。做运维巡检时这几个命令配合起来基本能覆盖所有和文件类型有关的排障需求。4. 实际动手几条命令读透文件真实身份4.1 Windows下不装第三方工具读文件头Windows 没有内置 file 命令但用 PowerShell 也能读文件头。最简单的就是 Format-HexFormat-Hex -Path .\download.installer -Count 16这个命令会把文件开头16个字节以十六进制和 ASCII 两列打印出来对照第4.3节的速查表就能判断大概类型。如果不想看整体格式用下面这段直接输出字节列表$bytes [System.IO.File]::ReadAllBytes(C:\path\to\file) $bytes[0..15] | ForEach-Object { {0:X2} -f $_ }执行结果会得到类似50 4B 03 04的序列。到这里如果能对上 PK说明至少是个 zip 容器如果看到D0 CF 11 E0说明是 OLE 复合文档可能是老版 Office 或 MSI。这个操作只读不改安全得很适合在双击任何陌生文件之前先验明正身。4.2 Linux和macOSfile命令一条搞定在 Linux 和 macOS 上判断文件类型是极轻松的事file image.unknown输出示例image.unknown: JPEG image data, JFIF standard 1.01, resolution 72x72, segment length 16。系统用预设的魔数库magic.mgc逐个比对文件头几毫秒就给出答案。还可以加-b去掉文件名前缀、-z深入观察压缩文件内部。想看原始字节头配合 xxdxxd -l 16 image.unknown实测下来file 对无后缀文件、下载到一半的损坏文件、伪装的样本都比较敏感。拿到一个“身份不明”的文件我总是先在终端跑一条 file再决定是否打开。十次有九次答案就在输出里。4.3 常用文件头速查表把这几年用得最多的几组文件头整理成一张速查表建议直接存下来十六进制文件头对应类型4D 5AWindows 可执行程序exe/dll/ocx50 4B 03 04ZIP 容器zip/docx/xlsx/apkD0 CF 11 E0OLE 复合文档旧版Office/msi25 50 44 46PDF 文档89 50 4E 47PNG 图片FF D8 FFJPEG 图片47 49 46 38GIF 图片1F 8B 08gzip 压缩流52 61 72 21RAR 压缩包37 7A BC AF7z 压缩包7F 45 4C 46ELFLinux 可执行文件/库66 74 79 70ISO Base MediaMP4/MOV1A 45 DF A3Matroska 视频容器MKV53 51 4C 69 74 65SQLite 数据库文件表格后面补一句文件头能帮你定位到“大类”但大类内部还有细分。比如同样是 4D 5A 开头的 DLL 和 EXE 都是 PE 格式进一步区分要看 PE 头里的 subsystem 字段同样是 PK 开头docx 和 zip 还需要查看内部清单。不过对日常排障来说确定到大类已经能解决绝大多数问题了。5. 常见疑问速查与避坑清单5.1 高频问题一表理清问题结论或建议修改扩展名是不是就能改变文件类型不能。真实类型由文件内容决定改后缀只会破坏关联让正确的软件打不开它遇到没有后缀的文件怎么办不要双击。先用 file 或十六进制看文件头再决定用什么软件打开MSI 能不能直接改成 zip 解压标准 MSI 不是 zip改为 zip 没有意义。提取文件用 msiexec /a确认是 zip 容器的才可解压chkdsk 能修复 RAW 分区吗基本上不能。RAW 状态下先做镜像备份再用 TestDisk 或磁盘级恢复工具处理怎么查 Linux 分区的文件系统类型df -T、lsblk -f、mount三选一双击未知文件提示“没有关联程序”先查类型找到合适的软件不要盲目安装“万能播放器/万能解码器”这里单独展开两句。改扩展名这件事网上有大量“格式转换教程”其实就是在教人改后缀比如把 .txt 改成 .csv把 .flac 改成 .mp3。这些操作不会改变编码用专业工具一读还是原格式。真正需要转换时应该用转换软件让软件重新编码。改后缀唯一的实际作用是调整文件关联让某些程序愿意认它但内容没变。再说“万能解码器”这个坑。遇到打不开的视频不少人会搜“万能播放器”装完发现全是广告弹窗和捆绑软件播放问题还没解决。正规做法是先用工具确认文件容器类型再用对应的播放器或解码包。绝大多数播放不了的情况其实是文件下载不完整而不是缺解码器。5.2 踩坑清单这些教训是我一条条试出来的第一重要磁盘在出现 RAW 症状后第一件事是断掉写入不是“试试看”。一次格式化或一次强制修复可能就让原本还能恢复的数据彻底消失。我见过太多人因为“救盘心切”把最后的复原机会也覆盖了。第二7-Zip 是试探未知文件的低成本工具但它不是万能识别器。它能打开很多复合格式如果列出的是“Windows Installer”这种结构你就该知道它不适合直接用解压逻辑去折腾。数字世界的工程问题前提永远是“先判断再动作”。第三安装包弹出“解压中”并不等于文件坏了。很多商业软件安装介质本身就是引导器内部包的组合第一次解压是正常流程先看官方文档再决定要不要动手改文件。动手越早往往错得越远。最后分享一个每天都在用的习惯。我在收到来路不明的文件时第一件事永远是“读文件头”而不是双击。多年前帮人恢复过一个看似损坏的项目文档名字被乱写成 .tmp所有人都在找原始文件。我在 Linux 下跑了一句 file 命令返回结果直接告诉我这是 Zip archive data里面躺着 docx 的目录结构改回 .docx 之后内容一字不丢。后来我带过的团队新人入职我都会专门讲一遍这个知识点文件类型不是玄学它会把答案老老实实写在最前面那几颗字节里只是大多数人从没往那儿看过。这个习惯每次只花你几秒钟但关键时刻能省下你一整天。