在Windows系统中识别文件类型

5

Linux 操作系统通过查看文件头部的魔数来识别文件。Windows 操作系统如何实现?它是依靠一种类似于魔数机制的方法还是仅仅依赖于文件扩展名?


它只依赖于扩展名。(我仍然不确定这是犯罪愚蠢还是非常聪明) - Piskvor left the building
1
文件扩展名是文件头部分还是文件系统的一部分? - megson
文件扩展名不是文件内容的一部分,它是从元数据中派生出来的,即文件的名称。 - David Heffernan
1个回答

5
它仅依赖于文件系统提供的扩展名;不会检查文件的内容。例如,参见此文章 - 它谈论的是Windows XP,但据我所知,所有已发布的Windows版本都共享这种一般行为:http://support.microsoft.com/kb/307859

那意味着文件扩展名是文件系统的一部分,对吗? - megson
2
@megson 8.3 的限制与此无关。那只是当时文件系统的设计选择。现代文件系统仍然有限制,只不过更大了。 - David Heffernan
2
当Linux从Windows接收文件以包含新的魔数时,它是否修改文件头? - megson
1
@megson:FAT文件系统仅允许文件名使用8个字母,扩展名只能使用3个字母(在FAT卷上的长文件名是操作系统实现的技巧)。这个文件系统的限制是大多数扩展名都有三个字母的原因。http://en.wikipedia.org/wiki/8.3_filename - Piskvor left the building
5
@megson:不,它会“读取”魔术数字——换句话说,检查文件以查看它类似于哪种已知格式。例如,任何GIF文件必须以字符串“GIF”开头;通过查看文件,我可以因此推断出,如果它以GIF开头(和各种其他启发式方法),它很可能是一个GIF文件。这些“魔术数字”就是一些已知文件格式的特征部分集合,而不是一些额外的元数据。http://en.wikipedia.org/wiki/Magic_number_(programming)#Magic_numbers_in_files - Piskvor left the building
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接