3. 还有别的办法吗 ?
也许好的办法正在某一个角落里偷偷等等我们。
我们何不换一种思维方式来解决这个问题,那就是:
我们设计一门编程语言来描述不同的文件格式,开发一个编译器来解析这门语言,同时开发一个文件处理器来处理这样的文件。我们先把这门语言暂时称为SDT,把用SDT语言写的程序称之为SDT脚本吧:)
图2 文件的解析
如图2所示,我们的编译器(Compiler)接受用SDT语言写的脚本,把它处理成一堆符号流,传给文件处理器(Distill),文件处理器接受这样的符号流,用它来解析数据文件(即各种各样的数据文件),然后将生成的结果保存在我们的数据库(Database)里,通过这一过程,就顺利完成了对数据文件的解析。我们把上面的三个模块统称为SDTKernel吧!
那么我们回过头来再看以前提出的问题:
a) 跨平台
SDT脚本是文本文件,要保证SDTKernel扩平台就可以了。例如我们可以使用C++开发这样的Kernel,然后在不同的操作系统下重新编译。而对于SDT语言的使用者,则这需要不同的操作系统安装不同的SDTKernel就可以了。
b) 数据接口
我们再开发一个小型的数据库存储引擎,提供保存、查询、打印这样的数据,同时还为将文件往数据库导入增加了砝码
c) 开发门槛
取决于SDT语言的复杂度,不过与Java/C++这样的庞然大物相比,我们确信她一定很Mini;当然就看我们怎么去设计它了J
看上去任务很重,非常艰巨,看到这,那么还有信心吗?