File_format

**檔案格式**（英語：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 最初是用於表示電子郵件的附件的類型。

## 參見

* 檔案格式列表
* 音訊檔格式
* 文件檔案格式
* 化學檔案格式
* 副檔名
* 圖形檔案格式
* 自由檔案格式列表
* 目的檔格式
* 視訊檔格式

## 外部連結

* File extensions encyclopedia （頁面存檔備份，存於網際網路檔案館） （英文）
* FileInfo.net - 副檔名資源 （頁面存檔備份，存於網際網路檔案館）
* 按字母順序的副檔名和檔案格式列表 （頁面存檔備份，存於網際網路檔案館）
* 程式設計師檔案格式資源 （頁面存檔備份，存於網際網路檔案館）
* 檔案格式 | 中文官方站 （頁面存檔備份，存於網際網路檔案館）檔案格式解釋、打開軟體
* 格式之爭自由軟體雜誌上關於檔案格式歷史的文章
* Magic signature database - Standard file format information and FFID registry
* File signatures （頁面存檔備份，存於網際網路檔案館） (aka magic numbers) found in files to indicate their file type
* PRONOM technical registry （頁面存檔備份，存於網際網路檔案館）
* Library of Congress file format information （頁面存檔備份，存於網際網路檔案館）
* Intoduction to Uniform Type Identifiers （頁面存檔備份，存於網際網路檔案館）
* Game File Format Central - A large and expanding list of detailed descriptions of game-related file-formats （頁面存檔備份，存於網際網路檔案館）
* BIEW Binary vIEW project