1.1理解数字文件
数字文件及其文件格式的世界就像一个宇宙,当中的每一个都有其自己的语言。大多数程序只是理解他们自身的文件格式和一小部分相关的格式,在1.1章节中所提到的的转换器中,例如当一个程序需要通过另一个程序来读取文件时,通常需要导出模块或者显示插件。
在使用中,存在着有上千个不同类型的文件格式,并且大多数格式都有着不同的版本和语言。例如使用最为广泛的PDF格式在这18年间已经演变成了8个增强版本和不同扩展。设置被我们所使用到的通用文件格式(genericfile formats),例如XML在数据世界中做了很少的规定统一。基于使用当下微软Office的版本的Office Open Xml格式和基于使用OpenOffice的OpenDocument格式文档都是属于基于XML格式的office文档,但是自己所编写的程序想要对这些格式文件起作用仍然需要一个特定的转换器来解析这些格式。
幸运的是,大多数程序不需要担心这些正在增多的格式,而你只需要理解这些文档是哪个国家的语言,程序只需要理解api适用于哪些格式。当你试图编写程序时会遇到一些麻烦,我猜想你会了解有哪些文件格式在被广泛地使用。
例如,我猜想你会实现一个基于文件内容在分享网络中的的搜索引擎,用来找到自己想要的文档。你可以浏览和需找excel表格,pdf、word文档、text文件、图片、不同格式的音频、ppt、一些OpenOffice文档,html、flash动画、和一些囊括许多文档的zip文件,也许你会利用这些格式所对应的程序来打开文件,但是当有几千个或者几百万个文件时,一个个去打开他们再将其中内容做搜索引擎的索引,这样的做法是不可行的。这时候,你需要一个程序来帮助你做这些,但是你该如何编写这个程序呢?
首先,你需要开发一个程序来识别现有的文件格式的特性。为此,我们需要做的是利用规定在多功能因特网邮政扩展程序(MIME)标准,以及在互联网地址编码分配机构(IANA)维护的文件格式的分类。