文件格式(或文件类型)是指电脑为了存储信息而使用的对信息的特殊编码方式,是用于识别内部储存的资料。比如有的储存图片,有的储存程序,有的储存文字信息。每一类信息,都可以一种或多种文件格式保存在电脑存储中。每一种文件格式通常会有一种或多种扩展名可以用来识别,但也可能没有扩展名。扩展名可以帮助应用程序识别的文件格式。
对于硬盘机或任何电脑存储来说,有效的信息只有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加入了限制向用户显示文件扩展名的功能。
特征签名一种广泛应用在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最初是用于表示电子邮件的附件的类型。