文件格式
文件格式(英语: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