2015-05-27 63 views
-1

应用程序如何检测文件扩展名?文件扩展名检测机制

我知道每个文件都有标题,其中包含与该文件相关的所有信息。 我的问题是应用程序将如何使用该标题来检测该文件?

文件系统中的每个文件都与它关联了一些元数据,例如,如果我将音频文件的扩展名从.mp3更改为.txt,然后用VLC打开该文件,但VLC仍然可以播放该文件。 我发现每个文件都有标题部分,其中包含与该文件相关的所有信息。 我想知道如何访问该标题?

+0

请参阅更新的问题。 –

+0

您可以在使用这些文件时提供您使用的技术/语言吗? – Whencesoever

+0

您想以什么方式访问标题数据?你想读十六进制还是单词? – moffeltje

回答

1

只给你一些更多的细节:

的文件扩展名是基本的方式来表示数据的格式(例如,TIFF图像文件有format specification)。

通过这种方式,应用程序可以检查它处理的文件的格式是否正确。

某些应用程序不检查(或接受错误)文件格式,只是试图将它们用作它所需的格式。因此,对于您的.mp3文件,此文件中的数据是而不是仅在将扩展名更改为.txt时发生了更改。

当VLC逐字节读取.txt并将其解释为.mp3时,它只能从该文件中提取正确的音乐数据。

现在有些文件包含一个头文件,用于额外验证文件内部数据的格式。例如,一个unicode文本文件(应该)包括一个BOM来指示文件中的数据如何处理。通过这种方式,应用程序可以检查标头标签是否与期望的标头相匹配,因此可以确定您的'.txt`文件实际上包含'mp3'格式的数据。

现在有相当多的应用程序来阅读这些标题标签,但它们通常是针对每种格式。例如这个TIFF Tag Viewer(我以前用它来检查我的TIFF文件中的标题标签)。

所以或者你可以用某种hex viewer打开你的文件,然后查看每个字节意味着什么格式规范,或者你可以在Google上搜索你希望看到它们的格式的标题查看器。

+0

谢谢.. 看起来像我可以使用大多数所有类型的文件的十六进制查看器。 –

+0

当然,您可以:每个文件都是由位组成的,因此超出字节数,字节可以用十六进制值表示。唯一的问题是你必须弄清楚每一块数据的含义(用格式说明符) – moffeltje