檔案格式

文件格式（file format），又稱文件類型，是指電腦為了儲存資訊而使用的對資訊的特殊編碼方式，是用於識別內部儲存的資料。比如有的儲存圖片，有的儲存程序，有的儲存文字信息。每一類信息，都可以一種或多種文件格式保存在電腦存儲中。每一種文件格式通常會有一種或多種擴展名可以用來識別，但也可能沒有擴展名。擴展名可以幫助應用程序識別的文件格式。
對於硬碟機或任何電腦的儲存裝置來說，有效的資訊只有0和1兩種。所以電腦必須設計有相應的方式進行資訊-位元的轉換。對於不同的資訊有不同的儲存格式。

**概述**
有些文件格式被設計用於儲存特殊的數據，例如：
*影像文件中的JPEG文件格式僅用於儲存靜態的影像，
*而GIF既可以儲存靜態影像，也可以存儲簡單動畫；
*Quicktime格式則可以存儲多種不同的媒體類型。
*文本類的文件有：
**text文件一般僅存儲簡單沒有格式的ASCII或Unicode的文本；
**HTML-{文件}-則可以儲存帶有格式的文本；
**PDF則可以儲存內容豐富的，圖文並茂的文本。
同一個文件格式，用不同的程序處理可能產生截然不同的結果。例如Word -{文件}-，用Microsoft Word觀看的時候，可以看到文本的內容，而以無格式方式在音樂播放軟體中播放，產生的則是噪聲。一種文件格式對某些軟體會產生有意義的結果，對另一些軟體來看，就像是毫無用途的數位垃圾。

** 規範**
許多文件格式都有公開的、不同程度規範或者建議的格式。這些規範或者建議描述了數據如何編碼，如何排列。有時也規定了是否需要特定的電腦程式讀取或處理。有兩種情況下，文件格式沒有公開。第一種情況是：開發者將文件格式視作商業秘密不願公開；第二種情況是：開發者不願或花去很少的時間用於規範文檔。
需要注意的是，使用不公開的文件格式可能會帶來額外的成本。要了解這類文件格式，或者需要通過對獲得的文件進行逆向工程，或者通過向開發者付費來獲得文件的格式。第二種方式中往往還需要與開發者簽訂不擴散協議。不論怎樣兩種方式都是費時，費錢的。

**識別文件的類型**
從程序的角度來看，文件是數據流，文件系統為每一種文件格式規定了訪問的方法。例如：元數據。不同的操作系統都習慣性的採用各自的方式解決這個問題，每種方式都有各自的優缺點。

**擴展名**
用擴展名識別文件格式的方式最先在數字設備公司的CP/M操作系統被採用。而後又被DOS和Windows操作系統採用。擴展名是指文件名中，最後一個點（.）號後的字母序列。例如，HTML文件通過.htm或.html擴展名識別；GIF圖形文件用.gif擴展名識別。在早期的FAT文件系統中，擴展名限制只能是三個字符，因此儘管現在絕大多數的操作系統已不再有此限制，許多文件格式至今仍然採用三個字符作擴展名。因為沒有一個正式的擴展名命名標準，所以，有些文件格式可能會採用相同的擴展名，出現這樣的情況就會使操作系統錯誤地識別文件格式，同時也給用戶造成困惑。
擴展名方式的一個特點是，更改文件擴展名會導致系統誤判文件格式。例如，將filename.html簡單改名為filename.txt會使系統誤將HTML文件識別為純文本格式。儘管一些熟練的用戶可以利用這個特點，但普通用戶很容易在改名時發生錯誤，而使得文件變得無法使用。因此，現代的有些操作系統管理程序，例如Windows Explorer加入了限制向用戶顯示文件擴展名的功能。

**特徵簽名 (File header)**
一種廣泛應用在UNIX及其派生的操作系統上的方法是將一個特殊的數字存放在文件的特定位置裡。最初這個數字一般是文件開始處的2個字節。現在一般是將任何可以獨一無二字符序列都可以作為特徵簽名。例如GIF圖形文件是將文件開始處的六個字節作為特徵簽名的，它可以是GIF87a或者GIF89a。但也有些文件很難通過這種方式識別，比如HTML文件。
採用這種方式可以更好的防止對文件格式發生誤判，並且特徵簽名可以給出關於文件格式的更詳細的信息。這種方式的缺點是效率較低。特別是顯示大量的文件時，由於每種特徵簽名具有不同的識別方式，將消耗系統大量的資源對文件格式進行判斷。擴展名和後面將提到的元數據方式由於採用固定格式數據，可進行快速匹配。應用程序往往利用特徵簽名來判斷文件是否完整和有效。

**元數據**
最後一種方式將文件格式信息存放到磁盤特定的位置。
採用這種方式，元數據與文件本身-{}-分開存放。此法的缺點是可移植性差。因為不同的文件系統之間元數據可能需要轉換。

**蘋果Macintosh的類型碼**
蘋果計算機的文件系統為每個文件的目錄入口都存儲了創建者和類型碼。這些代碼稱作OSType。例如一個蘋果計算機創建的文件的創建者會是AAPL而類型也是APPL。RISC操作系統採用類似的系統，用一個12比特的數字索引描述表。例如：十六進制的FF5代表PoScript，文件類型就是PostScript文件。

**IBM/Microsoft的擴展文件屬性**
HPFS, NTFS, FAT12, FAT16,及FAT32文件系統可以保存額外的文件屬性信息。它是由名字和與名字對應的值組成。例如擴展屬性“.type”用於判斷文件的類型，可能是值包括“Plain Text”或“HTML document”。一個文件可以有多種屬性。

**Unix的擴展文件屬性**
ext2，ext3，ReiserFS版本3，XFS，JFS和FFS文件系統允許存儲擴展的文件屬性。它是由名字和與名字對應的值組成。名字應當是獨一無二的。

**MIME類型**
MIME廣泛地用於許多Internet有關的應用，並且正在被廣泛地採用到其他的應用中。最初在RFC 1341中說明。MIME用一個類型/子類型表示文件的類型。例如：text/html代表文件是HTML-{文件}-，image/gif表示GIF文件。MIME最初是用於表示電子郵件的附件的類型。

**參見**
 文件格式列表- 音頻文件格式- 文件檔案格式- 化學文件格式- 文件擴展名- 圖形文件格式- 自由文件格式列表- Object file- 視頻文件格式

**外部鏈接**
  File extensions encyclopedia date=20210126091450   -  FileInfo.net - 文件擴展名資源 date=20090311004010 -  按字母順序的文件擴展名和文件格式列表 date=20100210202714 -  程序員文件格式資源 date=20210401173350 -  文件格式|中文官方站 date=20210117144100 文件格式解釋、打開軟件-  格式之爭自由軟件雜誌上關於文件格式歷史的文章-  Magic signature database - Standard file format information and FFID registry-  File signatures date=20210321095628  (aka magic numbers) found in files to indicate their file type-  PRONOM technical registry date=20210326164110 -  Library of Congress file format information date=20170315082851 -  Intoduction to Uniform Type Identifiers -  Game File Format Central - A large and expanding list of detailed descriptions of game-related file-formats date=20080828200655 -  BIEW Binary vIEW project