2015-05-27 104 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